如何通过SSH使用Sublime

我试图使用Sublime Text 2作为编辑器,当我SSH到我的工作服务器,我很难过。 我发现这个http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (在其他许多post中),看起来可能会有所帮助,但我不完全按照它,特别是在第5行的远程variables中我应该input什么值。我把“/ Users / path / to / local / copy”设置到我的本地根目录,但是我不知道这是对的还是更多去做。 有什么想法吗? 我在OSX10.8上

有三种方法:

  • 使用SFTP插件(商业) http://wbond.net/sublime_packages/sftp – 我个人推荐这一点,因为设置公共SSH密码与密码后,它是安全,简单,值得每一分钱http://opensourcehacker.com/2012/ 24分之10/ SSH键和-无密码login-基本换开发商/

  • 如注释中所述,使用osxfusesshfs将远程设备安装为本地文件系统。 这可能有点困难,取决于OSX版本和你在UNIX文件系统方面的技能。

  • 一起编写像rmate这样的文件,通过远程隧道使用某种本地守护进程进行文件编辑(非常困难,麻烦,但兼容sudo) http://blog.macromates.com/2011/mate-and-rmate/

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

您可以使用rsub ,这是从TextMate的rmate启发。 从描述:

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

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

我在Windows上,并使用4种方法: 在Linux上的 SFTPWinSCPUnisonSublime Text与X11通过SSH转发到Windows (是的,你可以做到这一点,没有凌乱的configuration和使用免费的工具)。

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

第四种方式:

MobaXterm

  1. 在Windows上安装MobaXterm
  2. 从MobaXterm SSH到你的Linux机器
  3. 在你的Linux机器上,安装Sublime Text 3. 在Ubuntu上如何安装
  4. 在命令提示符处,用subl开始崇高
  5. 而已! 现在,您已经在Linux上运行了壮观的文本,但其窗口正在Windows桌面上运行。 这是可能的,因为MobaXterm为你处理通过SSH的X11转发,所以你不必做任何事情来实现它。 可能会有一个小小的延迟,但是你的文件永远不会同步,因为你正在Linux机器上编辑它们。

注意:当调用subl,如果它抱怨某个库 – 确保你安装它们成功地从mobaxterm调用sublimetext。

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

  • 免费
  • 它很快
  • 这是可靠的,不关心你使用的编辑器
  • 您可以创build自定义忽略列表

SFTP

安装程序:安装SFTP Sublime文本包。 这个软件包需要许可证。

  1. 新build一个文件夹
  2. 打开它作为一个崇高的文本项目。
  3. 在边栏中,右键单击该文件夹并selectMap Remote。
  4. 编辑sftp-config.json文件
  5. 在步骤1中select下载,右键单击该文件夹。
  6. 在当地工作。

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

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

这个,除了一台SSHterminal机,给了我一个相当无缝的远程编辑体验。

WinSCP赋予

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

从此,WinSCP将保持您的更改同步。

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

齐奏

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

作为@ ubik的答案的后续,这里有三个简单的(一次性)步骤来获得在您的远程服务器上的'subl'命令:

  1. [ Local ]使用Sublime Package Manager在Sublime Text中安装rsub软件包
  2. [ 本地 ]执行下面的Bash命令(这将build立一个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。

你可以用subl ~/test.txt这样的服务器在Sublime Text中打开一个示例文件

我在MaxOS上,对我来说最方便的方法就是使用免费的Cyber​​Duck (也可用于Windows)。 您可以连接到您的远程SSH文件系统,并使用本地编辑器编辑您的文件。 Cyber​​Duck所做的是将文件下载到本地操作系统的临时位置,并使用您的编辑器打开它。 一旦保存文件,Cyber​​Duck自动将其上传到远程系统。 这似乎是透明的,就像你使用本地编辑器编辑远程文件一样。

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

有关更多信息:基本上是用Python编写的Git / SSH混搭,允许您在本地编辑器中编辑远程计算机上的文件和文件夹。 你不需要configuration内核模块,你不需要有一个持久连接,它是全部自动的,并且不会干扰现有的源代码控制,因为它使用了一个不工作的Git仓库。 另外,因为它是build立在Git之上的,所以速度非常快,并且支持自动合并两端可能会更改的文件,这与SSHFS / SFTP不同,后者只会使用较旧的时间戳来打开任何文件。

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

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

要使用sftp挂载远程目录,请在Linux文件pipe理器中input以下内容:

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

这可能看起来很慢,取决于您的网速。 但是这对我有效。

这是本地编辑居住在远程主机上的文件的最简单的方法,在远程主机上您先前已将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 root@${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来说,从数字海洋上的同类人物中可以看出这一点

我知道这是古老的,但我有一个非常酷的方式做这个值得分享。

Conemu和WinSCP需要什么。 这些是简单的说明

  1. 打开WinSCP.exe并login到我想要的远程服务器(我有
    发现在连接之前login是很重要的…)。

  2. 在WinSCP的首选项 – 两个设置改变。 select资源pipe理器types的界面,而不是指挥官 – 所以你看不到本地文件。 除非你想(但是看起来像在这里吸)。 设置崇高作为您的默认编辑器。

  3. 打开ConEmu,右键单击标签栏,然后selectAttach to...选项。 一个对话框将打开您的正在运行的应用程序。 selectWinSCP并select确定。 ConEmu现在将有一个打开的选项卡,WinSCP显示您的远程文件。

  4. 右键单击WinSCP选项卡,然后selectNew console... 当对话框打开时,在系统上inputSublime可执行文件的path。 在按下“ Start之前,在“ New console split ”框中selectto right的单选button并设置百分比。 我通常会select75%,但是您可以根据自己的喜好进行自定义,稍后可以更改。

    1. 现在你将在WinSCP右边的同一个窗口中看到Sublime。 在Sublime中,从View菜单中,selectSidebar->Hide Sidebar ,然后bam,你现在有了和你在本地一样的远程文件 – 当然有几个需要远程编辑的注意事项。 WinSCP虽然闪电很快。

我有两台显示器 – 左侧显示器的Chrome浏览器,右侧显示器显示代码编辑器。 同样在ConEmu ,我创build了另一个选项卡和ssh到我正在工作的站点,所以我可以做一些事情,比如远程运行gulpgrunt ,还可以从命令行操作文件。 认真加快发展。

这里有一个截图:

设置屏幕截图

我一直在做一个名为GiySync的项目。 它仍然需要一些工作,但它是开源的,我每天都在使用它几年。 我也在研究一个我称之为GitSyncApp的原生OS X版本

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

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

我尝试了其他解决scheme,如osx保险丝,扩展驱动器,传输,使用rsync的几个解决scheme等。他们都为小项目“OK”,但如果你使用了大量的代码,他们不为我工作。

很多文件系统选项都会caching来提高性能,这很好,直到没有。 就好像你在和其他人一起工作,而别人在服务器上改变文件。

如果我在一个空白或慢的networking中,我最终会遇到空文件,我也遇到了问题。 或没有同步的文件,那么caching变得很奇怪; 希望你最近承诺。 使用git解决了这个问题,因为它检查每个提交的完整性。

两个奖金function:

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

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

一个非常适合我的解决scheme – 在Mac上进行本地编辑,并将文件自动同步到远程机器上

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

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

    <?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. 在terminal窗口运行

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

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

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

lsyncd似乎是sshfs方法的不错select。 如果你使用“-delay 0”,它实时工作。