如何通过SSH使用Sublime

252
我想在远程连接到工作服务器时,使用Sublime Text 2作为编辑器,但是我遇到了困难。我找到了http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/这篇文章(还有其他很多文章),看起来可能会有所帮助,但是我不清楚第5行的remote变量应该放哪些值。我将“/Users/path/to/local/copy”设置为本地根目录,但我不确定是否正确,或者是否还需要进行其他设置。我的操作系统是OSX10.8。

13
我发现在我的Mac上使用osxfusesshfs更容易本地挂载远程目录,然后通过ST2进行编辑。 - AGS
有一个流行的ST2插件用于sftp。这里进一步解释了一个系统,我相信AGS正在参考:http://superuser.com/questions/134140/mount-an-sshfs-via-macfuse-at-boot。我在登录时遇到了自动加载的问题,不得不使用Platypus制作的解决方法登录脚本。我还需要一个更好的macfuse版本--如果您感兴趣,我会看看能否找到链接。 - lawlist
在Snow Leopard(10.6.8)中,我需要更新MacFuse的核心(即macfuse-core-10.5-2.1.9.dmg) - 这是我获取它的链接:http://blog.urbaninsight.com/2011/04/18/fixing-macfuse-latest-os-x-kernel 如果您有兴趣,这应该可以为您节省很多麻烦。 - lawlist
1
它可能不会实时,也许不太适合观看日志文件等内容,但通常设置gitolite是值得的。只需git pull,您就可以拥有本地的所有内容进行操作。然而,现在很多人都拥有快速的互联网,不会感到网络延迟...这完全取决于您的设置。 - user1115652
相关:通过SSH在Eclipse上远程处理项目。一些答案,例如我的回答,重叠,并且可以使用_任何_文本编辑器或IDE工作,因为我只是通过git同步整个存储库。 - Gabriel Staples
看起来sshfs与ARM Mac不兼容@AGS(我知道你的帖子是在它们存在之前的:D) - volvox
15个回答

172
有三种方法:

此外,在理论上,您可以在远程服务器上安装X11,并通过VNC或X11转发在那里运行Sublime,但这将非常缓慢。


1
请参阅相关的superuser.com问题http://superuser.com/questions/581292/secure-remote-editing-of-root-accessible-files-over-ssh。 - Mikko Ohtamaa
11
SSHFS/osxfuse组合对我有用!谢谢。对于其他遇到这个问题的人:https://github.com/osxfuse/osxfuse/wiki/SSHFS - thumbtackthief
有了SFTP插件,能否像在Emacs中一样使用交互式shell和REPL等工具? - Edmondo
我不同意“非常困难,繁琐”的评论;请见以下说明! - user456584
1
Sublime SFTP 实际上允许您远程编辑文件,但没有 ST 项目窗格(因此没有 Go to Anywhere),或者执行类似于 rsync 的操作。有一个免费试用版可供测试。 - Wernight
显示剩余5条评论

107

2
我也同意让rsub工作起来很容易,并且允许sudo,这很棒。我遇到了一些问题,但是SO也有答案:https://dev59.com/AGMk5IYBdhLWcg3w0hI- - Ross R
10
请标记此答案而不是第一个答案,因为这是免费的。 - theodore hogberg
这个指南非常完美,即使像我这样的终端小白也能轻松上手。谢谢! - Henrik
谢谢分享!现在我试过了,我再也离不开它了!!! - Abramodj
4
教程中的链接已失效,Sublime Text 3是否仍有类似的替代品?如果能更新答案就太好了。 - Kvothe
需要将以下与编程有关的内容从英语翻译成中文。仅返回已翻译的文本:需要编辑此答案以删除链接 - 链接到欺诈/钓鱼网站。 - scp

68

我使用Windows操作系统,尝试了四种方法:SFTPWinSCPUnison在Linux下通过SSH的X11转发使用Sublime Text编辑器然后显示到Windows上(是的,你可以使用免费软件而不需要繁琐的配置)。

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

第四种方法:

MobaXterm

  1. 在Windows上安装MobaXterm
  2. 从MobaXterm连接到你的Linux机器
  3. 在你的Linux机器上安装Sublime Text 3。这里是在Ubuntu上的安装方法
  4. 在命令提示符中输入subl启动sublime
  5. 就这样!现在你可以在Linux上运行sublime text,但窗口在你的Windows桌面上。这是可能的,因为MobaXterm为你处理了X11转发过程,所以你无需进行任何奇怪的操作即可实现。可能会有一点延迟,但你的文件永远不会失步,因为你直接在Linux机器上进行编辑。

注意:如果在调用subl时出现某个库的错误,请确保安装它们以成功从mobaxterm中调用sublimetext。

如果你无法在Linux机器上安装软件,那么最好使用Unison。为什么呢?

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

SFTP

设置:

安装SFTP Sublime Text插件。该插件需要许可证。

  1. 创建一个新文件夹
  2. 将其作为Sublime Text项目打开。
  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. 点击确定
  7. 连接到远程服务器并导航到感兴趣的文件夹
  8. 选择本地机器上的空文件夹。
  9. 选择您新创建的传输设置预设。
  10. 最后,按下Ctrl+U(命令>保持远程目录更新),确保选中“启动时同步”和“更新子目录”。

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

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

Unison

我发现,如果源树非常庞大(大约几百兆字节,具有深层次的层次结构),那么上面描述的WinSCP方法可能会有些慢。使用Unison可以获得更好的性能。缺点是Unison不是自动的(需要按键触发),并且需要在您的Linux机器上运行服务器组件。优点是传输非常快速,非常可靠,并且很容易设置忽略文件、文件夹和扩展名。


这个SFTP设置链接非常有用。我之前不知道SFTP是Windows软件还是Sublime插件。 - Kevin Meredith
我使用sftp来进行ST2、PuTTY和一些FileZilla的操作,这是我尝试过许多方案后发现最好的设置。然而,我不喜欢保留本地文件集。我非常喜欢ST,比如vi或nano这样的终端编辑器 - 在服务器上使用ST3听起来很不错。谢谢你的提示。 - Bosworth99
如果你是一个 Cyberduck(https://cyberduck.io/?l=en)用户,Sublime Text 非常好地集成了它。 - sakurashinken

36

作为对@ubik答案的跟进,这里是三个简单(一次性)步骤,让您的远程服务器上的'subl'命令正常工作:

  1. [本地]使用Sublime Package Manager在Sublime Text中安装rsub软件包。

  2. [本地]执行以下Bash命令(这将设置一个SSH隧道,这是rsub的秘密):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
    
  3. [服务器] 在你的远程服务器上执行以下 Bash 命令(这将安装 subl shell 命令):

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

看,现在你可以通过SSH使用Sublime Text了。

你可以使用类似 subl ~/test.txt 的命令在服务器上打开示例文件。


1
我一直收到这个错误信息:/usr/local/bin/subl: connect: Connection refused /usr/local/bin/subl: line 200: /dev/tcp/localhost/52698: Connection refused Unable to connect to TextMate on localhost:52698。你有什么想法? - thumbtackthief
1
在你的ssh命令中添加 -R 52698:localhost:52698。参见这里:https://dev59.com/AGMk5IYBdhLWcg3w0hI- - Ross R
一个我发现很有用的新手提示:记得在本地机器上运行Sublime。这实际上启动了服务器。 - Magne
1
以上内容是有效的,您只需要在之后重新启动远程服务器,否则您将继续收到连接被拒绝的错误。 - ctf0
rsub不再维护 - 我使用RemoteSubl来代替它。请参考这个SO答案 - hashchange
显示剩余4条评论

12

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


1
我点了赞,尽管这在使用sudo时无法工作...(需要超级用户访问权限才能写入的文件) - Tiago Coelho
1
来发布这个确切的解决方案。只要您使用CyberDuck,它就非常方便。但请记住,它仅在CyberDuck运行时有效。您也可以使用相同的方法在其他编辑器中打开文件,但我发现并不是所有编辑器都能可靠地工作,并且可能会失去连接或悄悄地切换到仅本地保存而不是远程保存(例如Microsoft Excel)。然而,使用Sublime从未遇到过任何问题。 - user5359531

8
你可以尝试一下我正在开发的 'xeno'。它允许你通过SSH连接在Sublime Text(或任何本地编辑器)中打开文件/文件夹,并自动同步更改到远程机器。它应该可以在几乎所有POSIX系统上工作(我自己使用它从OS X连接到Linux机器并在Sublime Text中编辑文件)。它是免费和开源的。我希望能得到一些反馈。
更多信息:它基本上是一个用Python编写的Git/SSH混合体,允许你在本地编辑器中编辑远程机器上的文件和文件夹。你不需要配置内核模块,也不需要持久连接,它都是自动的,并且不会干扰现有的源代码控制,因为它使用一个独立于工作树的Git仓库。此外,因为它是建立在Git之上的,所以非常快速,并支持自动合并可能在两端都发生变化的文件,而不像SSHFS/SFTP那样只会覆盖具有较旧时间戳的任何文件。

6
这是在你之前设置了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

完成了!!!

现在在本地主机上只需开始编辑文件... 当您本地列举目录时,可能不会列出任何内容,直到您进入子目录或列举特定文件... 惰性加载... 这不影响编辑文件。

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系统,请参阅Digital Ocean上的教程了解如何使用SSHFS来挂载远程文件系统。


5
我知道这已经很老了,但我有一种非常酷的方法可以做到这一点,值得分享。
所需工具是ConemuWinSCP。以下是简单的说明。
  1. 打开WinSCP.exe并登录到所需的远程服务器(我发现在附加之前登录很重要...)。

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

  3. 在打开ConEmu后,右键单击标签栏并选择“附加到...”选项。将打开一个带有正在运行应用程序的对话框。选择WinSCP并选择确定。现在,ConEmu将具有一个打开的选项卡,其中显示WinSCP的远程文件。

  4. 右键单击WinSCP选项卡,然后选择“新控制台...”选项。当对话框打开时,请输入系统上Sublime可执行文件的路径。在按下“开始”之前,在标有“新控制台分割”的框中选择单选按钮“到右侧”并设置百分比。我通常选择75%,但您可以根据自己的喜好进行自定义,并且稍后可以更改。

    1. 现在,您将在同一窗口中看到Sublime在WinSCP右侧运行。在Sublime中,从“视图”菜单中选择“侧边栏->隐藏侧边栏”,然后您现在以与本地完全相同的方式拥有远程文件-当然,在编辑任何远程内容时会带有一些警告。 WinSCP非常快速。
我有两个显示器——左边的显示器显示Chrome浏览器,右边的显示器显示代码编辑器。同时,在ConEmu中,我创建了另一个选项卡并ssh到我正在工作的网站上,这样我就可以远程运行gulpgrunt,还可以通过命令行操作文件。这大大加快了开发速度。
以下是屏幕截图:

Setup Screenshot


5

您可以使用sftp在本地计算机上挂载远程目录,然后像平常一样使用Sublime Text打开文件。

要使用sftp挂载远程目录,请在Linux文件管理器中输入以下内容;

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

根据您的互联网速度,可能会感觉有点慢。但对我而言,这是有效的。


4

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


我非常喜欢这个选项。挂载应该让你将整个驱动器作为Sublime项目打开。 - Mic Fok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接