如何在SSH上使用Sublime

时间:2013-04-11 20:15:14

标签: ssh sublimetext2

当我通过SSH连接到我的工作服务器时,我正在尝试使用Sublime Text 2作为编辑器,我很难过。我发现这个http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/(在许多其他帖子中)看起来可能会有所帮助,但我并没有完全遵循它,尤其是我应该为第5行中的远程变量添加什么值。我设置了“/用户/路径/到/本地/复制“到我的本地根目录,但我不知道这是否正确或是否还有更多工作要做。有什么想法吗?我在OSX10.8上

15 个答案:

答案 0 :(得分:156)

有三种方式:

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

答案 1 :(得分:99)

您可以使用rsub,其灵感来自TextMate的rmate。从描述:

  

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

Here's a good tutorial了解如何正确设置。

答案 2 :(得分:65)

我在Windows上使用过4种方法: SFTP WinSCP Unison Linux上的Sublime Text with X11通过SSH转发到Windows (是的,你可以做到这一点,没有混乱的配置和使用免费工具)。

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

第四种方式:

<强> MobaXterm

  1. 在Windows上安装MobaXterm
  2. 从MobaXterm到您的Linux机箱的SSH
  3. 在您的Linux机器上,安装Sublime Text 3.这是how to on Ubuntu
  4. 在命令提示符处,使用subl
  5. 启动sublime
  6. 就是这样!您现在可以在Linux上运行sublime文本,但其窗口在Windows桌面上运行。这是可能的,因为MobaXterm为您处理通过SSH的X11转发,因此您无需做任何有趣的事情来实现它。可能会有少量延迟,但您的文件永远不会不同步,因为您正在Linux机器上对它们进行编辑。
  7. 注意: 如果它抱怨某个库,则调用subl时 - 确保安装它们以成功从mobaxterm调用sublimetext。

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

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

    <强> SFTP

    设定: 安装SFTP Sublime Text包。此套餐需要许可证。

    1. 创建新文件夹
    2. 将其作为Sublime Text Project打开。
    3. 在侧边栏中,右键单击文件夹并选择Map Remote。
    4. 编辑sftp-config.json文件
    5. 右键单击步骤1中的文件夹选择下载。
    6. 在本地工作。
    7. 在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(命令&gt;保持远程目录最新)并确保选中“启动时同步”和“更新子目录”。
      11. 从那时起,WinSCP将保持您的更改同步。

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

        <强>的Unison

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

答案 3 :(得分:32)

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

  1. [本地]使用Sublime Package Manager
  2. 在Sublime Text中安装rsub
  3. [本地]执行以下Bash命令(这将设置SSH tunnel,这是rsub的秘密酱油):

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

    sudo wget -O /usr/local/bin/subl https://raw.github.com/aurora/rmate/master/rmate; sudo chmod +x /usr/local/bin/subl
    
  5. 瞧! 您现在通过SSH使用Sublime Text。

    您可以使用类似subl ~/test.txt

    的内容在服务器中打开Sublime Text中的示例文件

答案 4 :(得分:10)

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

答案 5 :(得分:8)

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

有关更多信息:它基本上是一个用Python编写的Git / SSH mashup,允许您在本地编辑器中编辑远程计算机上的文件和文件夹。您不必配置内核模块,您不需要持久连接,它是全自动的,并且它不会干扰现有的源代码控制,因为它使用了一个失效的Git存储库。此外,因为它是基于Git构建的,所以它非常快并且支持自动合并可能在两端都有变化的文件,这与SSHFS / SFTP不同,后者只会破坏任何具有较旧时间戳的文件。

答案 6 :(得分:5)

我知道这已经过时了,但我有一个很酷的方式来做这件事值得分享。

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

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

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

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

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

    1. 现在,您将在WinSCP右侧的同一窗口中看到Sublime。在Sublime中,从View菜单中选择Sidebar->Hide Sidebar和bam,你现在拥有与本地完全相同的远程文件 - 当然还有一些注意事项是远程编辑任何东西。尽管如此,WinSCP正在快速发展。
  5. 我有两台显示器 - 左侧显示器显示器和Chrome浏览器,右侧显示器显示代码编辑器。同样在ConEmu中,我在我正在处理的网站上创建了另一个标签和ssh,因此我可以执行远程运行gulpgrunt以及操作来自命令行。认真加快了发展。

    这是一个截图:

    Setup Screenshot

答案 7 :(得分:5)

您可以使用sftp在您的位置计算机上安装远程目录,然后只需按照常规方式使用Sublime文本打开文件。

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

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

根据您的网速,这似乎很慢。但这对我有用。

答案 8 :(得分: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

完成!!!

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

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

For OSX or Windows see this tut from the kind folk over on Digital Ocean

答案 9 :(得分:4)

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

答案 10 :(得分:3)

我一直致力于一个名为GiySync的项目。它仍然需要一些工作,但它是开源的,我每天都在使用它几年。我还在开发一个名为GitSyncApp的本机OS X版本

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

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

我尝试了其他解决方案,如osx fuse,Expand Drive,Transmit,使用rsync的几种解决方案等等。它们都可以正常工作&#39; OK&#39;对于小型项目,但如果您使用大量代码,那么它们对我不起作用。

许多文件系统选项都会进行缓存以提高性能,这很好,直到它没有。就像您正在与其他人合作而其他人更改服务器上的文件一样。

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

两个奖励功能:

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

一个对我有用的解决方案 - 在Mac上本地编辑,并使文件自动同步到远程计算机

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

  2. 执行
  3. 在〜/ 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>

  4. 在终端窗口中运行

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  5. 那就是它。对〜/ SyncDirectory中任何文件的任何更改都将同步到远程计算机上的〜/ SyncDirectory。本地更改将覆盖任何远程更改。

  6. 这将创建一个监视SyncDirectory的launchd作业,无论何时发生任何更改,都会运行rsync以将目录同步到远程计算机。

答案 13 :(得分:0)

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

答案 14 :(得分:0)

Use FileZilla

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

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

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

  • 保存文件后,Filezilla会自动提示我是否要“将该文件上传回服务器”,单击“是”,然后更新。