如何在SSH上使用Sublime

当我SSH到我的工作服务器时,我试图使用Sublime Text 2作为编辑器,我被难住了。我发现这个http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/(在许多其他帖子中)看起来可能有帮助,但我没有完全遵循它,特别是我应该为第5行中的远程变量输入什么值。我设置“/Users/path/to/local/copy”到我的本地根目录,但我不知道这是否正确,或者是否有更多的事情要做。任何想法吗?我是OSX10.8

335728 次浏览

有三种方法:

  • 使用SFTP插件(商业)< a href = " http://wbond.net/sublime_packages/sftp " rel = " noreferrer " > http://wbond.net/sublime_packages/sftp < / >,我个人建议,作为后设置公共SSH密钥和密码安全,简单,值得每一分钱< a href = " http://opensourcehacker.com/2012/10/24/ssh-key-and-passwordless-login-basics-for-developers/ " rel = " noreferrer > http://opensourcehacker.com/2012/10/24/ssh-key-and-passwordless-login-basics-for-developers/ < / >

  • 使用注释中提到的osxfusesshfs将远程文件系统挂载为本地文件系统。这可能有点困难,这取决于OSX版本和您使用UNIX文件系统的技能。

  • 把rate之类的东西组合在一起,使用某种本地守护进程在远程隧道上进行文件编辑(非常困难,麻烦,但sudo兼容)http://blog.macromates.com/2011/mate-and-rmate/

此外,理论上,你可以在远程服务器上安装X11,并通过VNC或X11转发在那里运行Sublime,但这样做没有任何意义。

你可以使用rsub,它的灵感来自TextMate的rmate。从描述来看:

Rsub是Sublime Text 2的TextMate 2的“rate”特性的实现,允许使用SSH端口转发/隧道在远程服务器上编辑文件。

这里有一个很好的教程关于如何正确设置它。

作为@ubik回答的后续,以下是让“subl”命令在远程服务器上工作的三个简单(一次性)步骤:

  1. [当地的]使用Sublime包管理器在Sublime Text中安装rsub
  2. [当地的]执行以下Bash命令(这将设置一个SSH隧道,这是rsub的秘密武器):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
    
  3. [Server] Execute the following Bash command on your remote server (this will install the 'subl' shell command):

    sudo wget -O /usr/local/bin/subl https://raw.github.com/aurora/rmate/master/rmate; sudo chmod +x /usr/local/bin/subl
    

And voila! You're now using Sublime Text over SSH.

You can open an example file in Sublime Text from the server with something like subl ~/test.txt

我在Windows上,已经使用了4种方法:SFTP有WinSCP一致崇高的文本在Linux与X11转发SSH到Windows(是的,你可以这样做,没有混乱的配置和使用免费工具)。

如果你能在你的Linux机器上安装软件,第四种方法是最好的。

第四种方法:

MobaXterm

  1. 在Windows上安装MobaXterm
  2. SSH到您的Linux盒子从MobaXterm
  3. 在你的linux电脑上,安装Sublime Text 3。这是如何使用Ubuntu
  4. 在命令提示符中,使用subl开始sublime
  5. 就是这样!你现在可以在Linux上运行sublime文本,但是它的窗口在你的Windows桌面上运行。这是可能的,因为MobaXterm为您处理通过SSH的X11转发,所以您不需要做任何奇怪的事情来让它运行。可能会有一点点延迟,但您的文件永远不会不同步,因为您是在Linux机器上编辑它们。
< p >注意: 当调用subl时,如果它抱怨某个库-确保你安装它们成功地从mobaxterm调用sublimetext .

如果你不能在你的Linux机器上安装软件,最好是Unison。为什么?

  • 它是免费的
  • 它的速度非常快
  • 它是可靠的,并且不关心您使用哪个编辑器
  • 您可以创建自定义忽略列表

SFTP

< p >设置: 安装SFTP Sublime Text包。

. zip文件需要license支持
  1. 创建一个新文件夹
  2. 打开它作为一个崇高的文本项目。
  3. 在侧边栏中,右键单击文件夹并选择Map Remote。
  4. 编辑sftp-config文件。json文件
  5. 右键单击步骤1中的文件夹,选择下载。
  6. 在本地工作。

在sftp-config中,我通常设置:

"upload_on_save": true,
"sync_down_on_open": true,

除了机器的SSH终端外,这给了我一个相当无缝的远程编辑体验。

有WinSCP

  1. 安装并运行有WinSCP
  2. 转到首选项(Ctrl+Alt+P),点击传输,然后点击添加。命名预设。
  3. 将传输模式设置为二进制(不需要行转换)
  4. 将文件修改设置为“不更改”
  5. 点击文件掩码旁边的编辑按钮,设置包含和排除文件和文件夹(当你有.git/。SVN文件夹存在,或者您想要排除同步构建产品)。
  6. 单击OK
  7. 连接到远程服务器并导航到感兴趣的文件夹
  8. 在本地机器上选择一个空文件夹。
  9. 选择新创建的预设传输设置。
  10. 最后,按Ctrl+U(命令>保持远程目录最新),并确保选中“启动时同步”和“更新子目录”。

从那时起,WinSCP将使您的更改保持同步。

使用SublimeText在本地文件夹中工作。只要确保Sublime Text设置为从正在编辑的文件中猜测行尾即可。

一致

我发现如果源树是巨大的(大约几百MB,有很深的层次结构),那么上面描述的WinSCP方法可能会有点慢。使用一致可以获得更好的性能。缺点是Unison不是自动的(你需要用键盘触发它),并且需要在你的linux机器上运行一个服务器组件。好的方面是传输非常快,非常可靠,忽略文件,文件夹和扩展非常容易设置。

你可以试试我一直在做的“韩国帝王”。它将允许您通过SSH连接打开Sublime文本(或任何本地编辑器)中的文件/文件夹,并自动将更改同步到远程机器。它应该可以在几乎所有的POSIX系统上工作(我自己使用它从OS X连接到Linux机器并在Sublime Text中编辑文件)。它是免费的,开源的。我想要一些反馈。

更多信息:它基本上是一个用Python编写的Git/SSH mashup,允许您在本地编辑器中编辑远程机器上的文件和文件夹。您不需要配置内核模块,也不需要持久连接,这都是自动的,而且它不会干扰现有的源代码控制,因为它使用了一个工作树外Git存储库。此外,因为它是构建在Git上的,所以它非常快,并支持自动合并两端可能发生变化的文件,而不像SSHFS/SFTP那样只会清除任何带有旧时间戳的文件。

我在MacOS上,对我来说最方便的方法是使用< >强CyberDuck < / >强,这是免费的(也可用于Windows)。您可以连接到远程SSH文件系统并使用本地编辑器编辑您的文件。CyberDuck所做的是将文件下载到本地操作系统上的临时位置,然后用编辑器打开它。一旦你保存文件,CyberDuck会自动上传到你的远程系统。它看起来是透明的,就好像您正在使用本地编辑器编辑远程文件一样。Cyberduck的开发人员还创建了< >强MountainDuck < / >强来挂载远程文件系统。

我一直在做一个叫做GiySync的项目。它仍然需要一些改进,但它是开源的,我已经每天都在使用它好几年了。我还在开发一个原生OS X版本,我称之为GitSyncApp

现在它只支持OS X,但是它应该很容易添加对Linux的支持,可能也支持Windows。

它通过观察文件系统事件来工作,并使用git来同步本地机器和服务器上的项目文件夹。

我尝试了其他解决方案,如osx保险丝,扩展驱动器,传输,几个解决方案,使用rsync等。它们在小型项目中都能正常工作,但如果你要处理大量代码,它们就不适合我了。

许多文件系统选项都进行缓存以提高性能,这很好,但事实并非如此。比如,如果你和其他人一起工作,而其他人更改了服务器上的文件。

如果我在一个脆弱或缓慢的网络上,我也会遇到问题,最终会得到空文件。或者文件没有同步,缓存就会变得奇怪;希望你最近做过。使用git解决了这个问题,因为它检查每个提交的完整性。

两个额外功能:

  1. 每次保存都要提交一次。它不是特别有用,但如果你需要回到过去,你可以。
  2. 它适用于任何文本编辑器。

另一个类似于osxfuse的mac解决方案是只使用Panic Software的传输FTP客户端,它允许您将远程文件夹挂载为本地磁盘。它支持SFTP,非常安全。

我知道这很老了,但我有一个很酷的方法值得分享。

Conemu有WinSCP中需要的。这些都是简单的指令

  1. 打开WinSCP.exe并登录到我想要的远程服务器(我有
    .exe) 发现在连接之前登录很重要…)李。< / p > < / >

  2. 在WinSCP的首选项中,有两个设置需要更改。选择资源管理器类型的界面,而不是指挥官-所以你看不到本地文件。除非你想这么做(但这在这里似乎很糟糕)。将Sublime设置为默认编辑器。

  3. 打开ConEmu后,右键单击选项卡栏并选择选项Attach to...。将打开一个对话框,其中包含正在运行的应用程序。单击“WinSCP”,选择“OK”。ConEmu现在有一个打开的选项卡,使用WinSCP显示远程文件。

  4. 在“WinSCP”页签,右键单击,选择“New console...”。当对话框打开时,输入系统上Sublime可执行文件的路径。在按下Start之前,在显示New console split的框中选择单选按钮to right并设置百分比。我通常选择75%,但你可以根据自己的喜好定制,以后也可以更改。

    1. 现在你会看到Sublime在同一个窗口中运行到WinSCP的右边。在Sublime中,从View菜单中选择Sidebar->Hide Sidebar,嘭,你现在有了远程文件,方式与本地完全相同——当然,远程编辑任何东西都有一些注意事项。不过,WinSCP的发展速度非常快。
    2. 李< / ol > < / >

    我有两个显示器-左边显示器显示Chrome浏览器,右边显示器显示代码编辑器。同样在ConEmu中,我创建了另一个选项卡并ssh到我正在处理的站点,因此我可以远程运行gulpgrunt,也可以从命令行操作文件。认真加快发展。

    这是一张截图:

    设置截图

根据你的具体需要,你可以考虑使用bt同步。在你的家庭电脑和工作电脑上创建一个共享文件夹。在你的家庭电脑上编辑文件(使用Sublime或其他你喜欢的工具),当你保存时,它们会自动同步。BitTorrent Sync不依赖于存储文件的中央服务器(如Dropbox等),所以理论上你应该清楚由于第三方存储敏感信息的任何问题。

你可以使用sftp挂载远程目录在你的位置机器上,然后简单地打开文件使用Sublime文本你通常会。

要使用sftp挂载远程目录,在Linux文件管理器上输入以下命令;

sftp://user@remote_box.com:22/home/user/code_directory

它可能看起来很慢,这取决于你的网速。但这对我很管用。

一个对我来说非常有用的解决方案——在Mac上进行本地编辑,然后让文件自动同步到远程机器上

  1. 确保您使用无密码登录到远程计算机。如果没有,请按照以下步骤执行http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

  2. 在~/Library/LaunchAgents/filesynchronizer中创建一个文件。Plist,内容如下:

    < p > <代码> & lt; ?xml version="1.0" encoding="UTF-8"? & lt; !DOCTYPE plist PUBLIC "-//Apple Computer//DTD plist 1.0// zh " "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> & lt; plist version = " 1.0 "比; & lt; dict> & lt; key> Label< / key> & lt; string> filesynchronizer< / string> & lt; key> ProgramArguments< / key> & lt; array> & lt; string> / usr / bin / rsync< / string> & lt; string> -avz< / string> & lt; string> /用户/用户名/ SyncDirectory< / string> & lt; string> USERNAME@REMOTEMACHINE: ~ & lt; / string> & lt; / array> & lt; key> WatchPaths< / key> & lt; array> & lt; string> /用户/用户名/ SyncDirectory< / string> & lt; / array> & lt; / dict> 代码& lt; / plist> < / > < / p > < /李>
  3. 在终端窗口运行

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist < / p >

  4. 就是这样。对~/SyncDirectory中任何文件的任何更改都将同步到远程机器上的~/SyncDirectory。本地更改将覆盖任何远程更改。

这将创建一个监视SyncDirectory的launchd作业,当有任何更改时,将运行rsync将该目录同步到远程计算机。

这是本地编辑远程主机上的文件的最简单的方法,您之前已经设置了ssh到远程IP

# issue on local box


sudo apt-get install sshfs   # on local host install sshfs ( linux )


# on local box create secure mount of remote directory


export REMOTE_IP=107.170.58.249 # remote host IP


sshfs myremoteuserid@${REMOTE_IP}:/your/remote/dir  /your/local/dir # for example

完成了! !

现在在本地主机上开始编辑文件…当你在本地列出目录时,它可能不会列出任何东西,直到你CD到子目录或列出一个特定的文件…延迟加载…这不会影响编辑文件

subl /your/local/dir/magnum_opus.go # local file edit using sublime text

上面是编辑远程文件

/your/remote/dir/magnum_opus.go  # remote file on box $REMOTE_IP

对于OSX或Windows看这个tut从善良的人在数字海洋

lsyncd似乎是sshfs方法的一个很好的替代方案。如果你使用“-delay 0”,它可以实时工作。

使用FileZilla

这适用于Mac和Windows用户(我在Mac上使用)。多年来,我使用了列出的几个答案,并发现FileZilla在我可以SSH访问的远程主机上编辑文件时很适合我的需求。它的设置也很快。

  • 我配置一个新的服务器连接
  • 连接到服务器
  • 右键单击我想编辑的文件并选择View/Edit
这将带来我的默认编辑器(Sublime),但它将与任何工作

.编辑器
  • 一旦我保存了文件,Filezilla会自动提示我是否要“将该文件上传到服务器”,我点击“是”,然后它就更新了。