245

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

4

15 回答 15

167

有以下三种方式:

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

于 2013-04-12T07:49:54.353 回答
104

您可以使用受 TextMate 启发的rsubrmate。从描述:

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

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

于 2013-08-07T15:31:17.197 回答
68

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

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

第四种方式:

MobaXterm

  1. 在 Windows 上安装MobaXterm
  2. 从 MobaXterm SSH 到您的 Linux 机器
  3. 在你的 linux 机器上,安装 Sublime Text 3。这是在 Ubuntu 上的方法
  4. 在命令提示符下,使用 sublime 启动subl
  5. 就是这样!你现在在 Linux 上运行了 sublime text,但它的窗口在你的 Windows 桌面上运行。这是可能的,因为 MobaXterm 为您处理通过 SSH 的 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 设置为从正在编辑的文件中猜测行尾。

齐声

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

于 2013-10-24T23:44:33.730 回答
33

作为@ubik 回答的后续行动,这里有三个简单的(一次性)步骤,可以让“subl”命令在您的远程服务器上运行:

  1. [本地]使用Sublime 包管理器rsub在 Sublime Text 中安装包
  2. [本地] 执行以下 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 中的示例文件subl ~/test.txt

于 2013-08-30T17:35:15.440 回答
12

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

于 2014-05-12T18:42:21.577 回答
8

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

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

于 2013-11-03T15:34:50.033 回答
5

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

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

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

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

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

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

    1. 现在您将在 WinSCP 右侧运行的同一窗口中看到 Sublime。在 Sublime 中,从 View 菜单中选择Sidebar->Hide Sidebar,然后 bam,您现在拥有与本地完全相同的远程文件 - 当然有一些注意事项是远程编辑任何内容。不过,WinSCP 的速度很快。

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

这是一个屏幕截图:

设置屏幕截图

于 2014-12-30T01:48:38.817 回答
5

您可以使用 sftp 将远程目录挂载到您的位置计算机上,然后像往常一样使用 Sublime 文本打开文件。

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

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

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

于 2015-08-28T18:57:04.513 回答
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 上好心人的这句话

于 2016-05-02T18:31:25.020 回答
4

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

于 2014-10-31T19:57:31.380 回答
3

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

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

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

我尝试了其他解决方案,如 osx fuse、Expand Drive、Transmit、几个使用 rsync 的解决方案等。它们都适用于小型项目,但如果您使用大量代码,它们对我不起作用。

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

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

两个奖励功能:

  1. 每次保存都会有一个提交。它不是超级有用,但如果你必须及时回到过去,你可以。
  2. 它适用于任何文本编辑器。
于 2014-05-31T17:18:42.750 回答
0

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

于 2015-03-03T05:06:25.130 回答
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 以将目录同步到远程计算机。

于 2016-01-10T08:58:44.080 回答
0

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

于 2017-02-14T07:47:02.013 回答
0

使用 FileZilla

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

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

这会打开我的默认编辑器(Sublime),但它可以与您安装的任何编辑器一起使用。

  • 保存文件后,Filezilla 会自动提示我询问是否要“将此文件上传回服务器”,我单击“是”,然后它会更新。
于 2019-05-06T20:42:59.590 回答