如何通过SSH使用Sublime


236

当我通过SSH进入工作服务器时,我试图使用Sublime Text 2作为编辑器,但我感到很困惑。我发现此http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/(在许多其他帖子中)看起来可能会有所帮助,但我并不完全遵循,尤其是在第5行中应为远程变量输入什么值。我在本地根目录中设置了“ / Users / path / to / local / copy”,但我不知道这是否正确还是更多去做。有什么想法吗?我在OSX10.8上


12
我发现它更易于使用,osxfuse并且sshfs在我的Mac上可以本地安装远程目录,然后通过ST2进行编辑。
AGS 2013年

有一个流行的sftp ST2插件。这是我相信AGS所参考的系统的进一步说明: superuser.com/questions/134140/…。我在登录时自动加载时遇到问题,不得不使用Platypus制作的变通方法登录脚本。我还需要更好的macfuse版本-如果您感兴趣,我会看看是否可以找到该链接。
法律列表

使用Snow Leopard(10.6.8),我需要MacFuse的更新内核(即macfuse-core-10.5-2.1.9.dmg)-这是我获得它的链接: blog.urbaninsight.com/2011 18年4月18日... 如果您有兴趣,应该可以省去很多麻烦。
法律列表

它不是实时的,也许不太适合观看日志文件和其他内容,但是经常设置甘蔗石是值得的。只需git pull,您就可以使用本地所有内容。然后,这些天又有很多人拥有快速的互联网连接,不会感到网络滞后...这完全取决于您的设置。

Answers:


161

有三种方法:

同样,从理论上讲,您可以在远程服务器上安装X11并通过VNC或X11转发在该服务器上运行Sublime,但是这样做是没有意义的。


1
另见相关superuser.com问题superuser.com/questions/581292/...
米克Ohtamaa

11
SSHFS / osxfuse组合对我有用!谢谢。对于其他人有这样的问题: github.com/osxfuse/osxfuse/wiki/SSHFS
thumbtackthief

带有sftp插件的人可以使用诸如emacs中的交互式shell和repl之类的工具吗?
Edmondo1984

@ Edmondo1984为此使用了一个真正的终端机
Mikko Ohtamaa 2013年

1
Sublime SFTP实际上允许您或者在没有ST项目窗格的情况下(而不是 Go to Anywhere)远程编辑文件,或者执行类似rsync的操作。有一个免费试用版可以对其进行测试。
2013年

102

您可以使用rsub,它受TextMate的启发rmate。根据说明:

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

这是一个很好的教程,说明如何正确设置它。


2
我也同意让rsub正常工作很容易,并且允许使用sudo,这很棒。我遇到了一些问题,它获得工作的权利,但因此不得不回答这个太:stackoverflow.com/questions/18938950/...
罗斯- [R

7
请标记此答案而不是第一个答案,因为这是免费的
theodore 2015年

该指南即使对于像我这样的完全末日菜鸟,也能完美地工作。谢谢!
Henrik

66

我在Windows上,使用了4种方法:Linux上的SFTPWinSCPUnisonSublime Text,以及通过SSH到Windows的X11转发到Windows(是的,您无需杂乱的配置和使用免费的工具即可完成此操作)。

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

第四种方式:

MobaXterm

  1. 在Windows上安装MobaXterm
  2. 从MobaXterm SSH到您的Linux机器
  3. 在Linux机器上,安装Sublime Text3。这是在Ubuntu上的操作方法
  4. 在命令提示符处,使用以下命令开始升华 subl
  5. 而已!现在,您已经在Linux上运行了sublime文本,但是在Windows桌面上运行了其窗口。这是可能的,因为MobaXterm为您处理了通过SSH进行的X11转发,因此您不必做任何时髦的事情就可以进行。可能会有一些延迟,但是您的文件将永远不会不同步,因为您是在Linux计算机上直接对其进行编辑的。

注意:在调用subl时,如果它抱怨某个库,请确保安装它们以成功从mobaxterm调用sublimetext。

如果您无法在Linux机器上安装软件,那么最好是Unison。为什么?

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

SFTP

设置:安装SFTP Sublime Text软件包。该软件包需要许可证。

  1. 新建一个文件夹
  2. 将其作为Sublime Text项目打开。
  3. 在边栏中,右键单击该文件夹,然后选择“映射远程”。
  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设置为猜测正在编辑文件的行尾即可。

统一

我发现,如果源树很大(层次结构很深,大约数百MB),那么上述WinSCP方法可能会有点慢。使用Unison可以获得更好的性能。不利的一面是Unison不是自动的(您需要通过按键触发它),并且要求服务器组件在Linux机器上运行。好的方面是,传输非常快,非常可靠,并且忽略文件,文件夹和扩展名的设置非常简单。


+1的SFTP setup链接。我不知道SFTP是Windows软件还是Sublime软件包。
凯文·梅雷迪斯

我将sftp用于ST2,PuTTY和一些FileZilla以达到良好的效果。这是我尝试许多后发现的最佳设置。但是,我确实不喜欢必须保留本地文件集。我非常喜欢ST,而不喜欢终端编辑器liek vi或nano-使服务器本身上的ST3听起来像是笔便宜的交易。THX的小费-
Bosworth99

如果您是赛博鸭(cyberduck.io/?l=en)用户,那么sublimetext可以很好地集成。
sakurashinken 2015年

33

作为@ubik答案的后续措施,以下是使'subl'命令在远程服务器上运行的三个简单(一次性)步骤:

  1. [ 本地 ] rsub使用Sublime软件包管理器以Sublime文本安装软件包
  2. [ Local ]执行以下Bash命令(这将建立SSH隧道,这是rsub的秘密武器):

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

    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。

您可以从服务器以Sublime Text打开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
是:将-R 52698:localhost:52698添加到ssh命令。在这里看到:stackoverflow.com/questions/18938950/...
罗斯- [R

我发现有用的Noob技巧:请记住在您的本地计算机上运行Sublime。这实际上启动了服务器。
Magne 2014年

@RossR-这不起作用。我的看起来像这样:“ RemoteForward 52698 127.0.0.1:52698 -R 52698:localhost:52698”并仍然输出相同的错误:“无法在localhost:52698上连接到TextMate”
FooBar 2014年

1
上面的作品,你只需要稍后重新启动远程服务器,否则你会不断收到拒绝连接的错误。
ctf0

10

我在MacOS上,对我来说最方便的方法是使用Cyber​​Duck,它是免费的(也适用于Windows)。您可以连接到远程SSH文件系统,并使用本地编辑器编辑文件。Cyber​​ Duck所做的是将文件下载到本地操作系统上的临时位置,然后使用编辑器打开它。保存文件后,Cyber​​Duck会自动将其上传到远程系统。似乎是透明的,好像您正在使用本地编辑器编辑远程文件一样。Cyber​​duck的开发人员还使用MountainDuck来安装远程文件系统。


1
我赞成,尽管这不适用于sudo ...(需要超级用户访问权限才能写的文件)
Tiago Coelho 2015年

1
来发布这个确切的解决方案。只要您使用Cyber​​Duck,它就非常方便。但是请记住,它仅在Cyber​​Duck运行时有效。您也可以使用相同的方法在其他编辑器中打开文件,但是我发现并非所有文件都能可靠地工作,并且可能会失去连接,或者悄悄地切换到仅本地保存而不是远程保存(例如Microsoft Excel)。不过,使用Sublime从来没有一个问题。
user5359531

8

您可以尝试我一直在尝试的东西' xeno '。它将允许您通过SSH连接在Sublime Text(或实际上是任何本地编辑器)中打开文件/文件夹,并自动将更改同步到远程计算机。它可以在几乎所有的POSIX系统上运行(我本人从OS X使用它来连接到Linux计算机并在Sublime Text中编辑文件)。它是免费和开源的。我希望得到一些反馈。

有关更多信息:它基本上是用Python编写的Git / SSH混搭,可让您在本地编辑器中编辑远程计算机上的文件和文件夹。您不必配置内核模块,不需要永久连接,它是自动的,并且不会干扰现有的源代码控制,因为它使用了不工作的Git存储库。另外,由于它基于Git构建,因此速度极快,并且支持自动合并两端可能更改的文件,这与SSHFS / SFTP不同,SSHFS / SFTP只会破坏具有旧时间戳的文件。


而且我写了一些简单的博客文章,其中包含脚本和配置选项,使ST2 + Xeno成为一个了不起的组合。.www.yeraze.com
Yeraze 2013年

5

您可以使用sftp将远程目录挂载到定位计算机上,然后以通常的方式使用Sublime文本打开文件。

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

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

根据您的互联网速度,它可能看起来很慢。但这对我有用。


5

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

ConemuWinSCP中需要什么。这些是简单的说明

  1. 打开WinSCP.exe并登录到所需的远程服务器(我
    发现在附加...之前登录很重要)。

  2. 在WinSCP的首选项中-两项更改。选择资源管理器类型的界面而不是Commander-这样就看不到本地文件。除非您愿意(但似乎在这里会很烂)。将Sublime设置为默认编辑器。

  3. 在ConEmu打开的情况下,右键单击选项卡栏,然后选择选项Attach to...。将打开一个对话框,其中包含正在运行的应用程序。选择WinSCP,然后选择确定。ConEmu现在将具有一个打开的选项卡,其中WinSCP将显示您的远程文件。

  4. 右键单击WinSCP选项卡,然后选择New console...。对话框打开时,输入系统上Sublime可执行文件的路径。在按之前Start,在显示出来的框中New console split选择单选按钮to right并设置百分比。我通常选择75%,但您可以根据自己的喜好对其进行自定义,以后可以更改。

    1. 现在,您将在WinSCP右侧运行的同一窗口中看到Sublime。在Sublime中,从“视图”菜单中选择Sidebar->Hide Sidebar,然后选择bam,您现在将以与本地完全相同的方式拥有远程文件-当然,要进行远程编辑也有一些注意事项。不过,WinSCP正在迅速减轻。

我有两个监视器-左监视器显示的Chrome浏览器,右监视器显示代码编辑器。同样在中ConEmu,我创建了另一个选项卡并ssh进入正在工作的站点,因此我可以执行诸如运行gulpgrunt远程操作之类的操作,还可以从命令行操作文件。认真加快发展。

这是屏幕截图:

设置截图


5

这是本地编辑驻留在远程主机上的文件的最简单方法,您之前已将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,请在Digital Ocean上从亲切的人那里看到此教程


4

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


我非常喜欢这个选项。安装应该使您可以将整个驱动器作为一个高级项目打开。
Mic Fok 2014年

3

我一直在从事一个名为GiySync的项目。它仍然需要一些工作,但是它是开源的,并且我每天都在使用它几年了。我还在使用我称为GitSyncApp的本机OS X版本

目前,它仅是OS X,但添加对Linux以及Windows的支持应该很容易。

它通过监视文件系统事件来工作,并且用于git同步本地计算机和服务器上的项目文件夹。

我尝试了其他解决方案,例如osx保险丝,扩展驱动器,传输,使用rsync的几种解决方案等。它们对于小型项目都可以正常运行,但是如果您要处理大量代码,那么它们对我来说就行不通了。

很多文件系统选项都进行缓存以提高性能,这很好,直到不能这样做为止。就像您与其他人一起工作时,其他人更改了服务器上的文件一样。

如果我处于不稳定或缓慢的网络中,而最终却得到空文件,那么我也会遇到问题。或文件未同步,则缓存变得奇怪;希望您最近做出了承诺。使用git解决了这个问题,因为它检查每个提交的完整性。

两个奖励功能:

  1. 您最终每次保存都会提交一次。它不是超级有用,但是如果您必须回到过去,则可以。
  2. 它适用于任何文本编辑器。

0

根据您的确切需求,您可以考虑使用BitTorrent Sync。在家用PC和工作PC上创建一个共享文件夹。编辑家用PC上的文件(使用Sublime或您喜欢的任何文件),保存时它们将自动同步。BitTorrent Sync不依赖存储文件的中央服务器(如Dropbox之类),因此从理论上讲,您应该避免由于第三方存储敏感信息而引起的任何问题。


0

最适合我的解决方案-在Mac上本地编辑,并将文件自动同步到远程计算机

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

  2. 在〜/ Library / LaunchAgents / filesynchronizer.plist中创建一个文件,其内容如下:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>filesynchronizer</string> <key>ProgramArguments</key> <array> <string>/usr/bin/rsync</string> <string>-avz</string> <string>/Users/USERNAME/SyncDirectory</string> <string>USERNAME@REMOTEMACHINE:~</string> </array> <key>WatchPaths</key> <array> <string>/Users/USERNAME/SyncDirectory</string> </array> </dict> </plist>

  3. 在终端窗口中运行

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. 而已。〜/ SyncDirectory中对任何文件的任何更改都将同步到远程计算机上的〜/ SyncDirectory。本地更改将覆盖所有远程更改。

这将创建一个启动的作业,该作业监视SyncDirectory,并且只要发生任何更改,都会运行rsync将目录同步到远程计算机。


这是双向同步吗?
咬伤

没有; 仅本地到远程计算机
Ran Locar

0

lsyncd似乎是sshfs方法的不错选择。如果使用“ -delay 0”,则它可以实时工作。


0

使用FileZilla

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

  • 我配置一个新的服务器连接
  • 连接到服务器
  • 右键单击要编辑的文件,然后选择View/Edit

这将调出我的默认编辑器(Sublime),但它将与您已安装的任何编辑器一起使用。

  • 保存文件后,Filezilla会自动提示我是否要“将该文件上传回服务器”,单击“是”,然后更新。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.