如何通过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-基本换开发商/
-
如注释中所述,使用
osxfuse
和sshfs
将远程设备安装为本地文件系统。 这可能有点困难,取决于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上的 SFTP , WinSCP , Unison和Sublime Text与X11通过SSH转发到Windows (是的,你可以做到这一点,没有凌乱的configuration和使用免费的工具)。
第四种方法是最好的,如果你可以在你的Linux机器上安装软件。
第四种方式:
MobaXterm
- 在Windows上安装MobaXterm
- 从MobaXterm SSH到你的Linux机器
- 在你的Linux机器上,安装Sublime Text 3. 在Ubuntu上如何安装
- 在命令提示符处,用
subl
开始崇高 - 而已! 现在,您已经在Linux上运行了壮观的文本,但其窗口正在Windows桌面上运行。 这是可能的,因为MobaXterm为你处理通过SSH的X11转发,所以你不必做任何事情来实现它。 可能会有一个小小的延迟,但是你的文件永远不会同步,因为你正在Linux机器上编辑它们。
注意:当调用subl,如果它抱怨某个库 – 确保你安装它们成功地从mobaxterm调用sublimetext。
如果你不能在你的Linux上安装软件,最好的是Unison。 为什么?
- 免费
- 它很快
- 这是可靠的,不关心你使用的编辑器
- 您可以创build自定义忽略列表
SFTP
安装程序:安装SFTP Sublime文本包。 这个软件包需要许可证。
- 新build一个文件夹
- 打开它作为一个崇高的文本项目。
- 在边栏中,右键单击该文件夹并selectMap Remote。
- 编辑sftp-config.json文件
- 在步骤1中select下载,右键单击该文件夹。
- 在当地工作。
在sftp-config中,我通常设置:
"upload_on_save": true, "sync_down_on_open": true,
这个,除了一台SSHterminal机,给了我一个相当无缝的远程编辑体验。
WinSCP赋予
- 安装并运行WinSCP
- 转到首选项(Ctrl + Alt + P),然后单击传输,然后单击添加。 命名预设。
- 将传输模式设置为二进制(您不需要行转换)
- 将文件修改设置为“不更改”
- 单击“文件掩码”旁边的“编辑”button,然后设置包含和排除文件和文件夹(适用于存在.git / .svn文件夹或希望排除构build产品同步的情况)。
- 点击OK
- 连接到您的远程服务器并导航到感兴趣的文件夹
- 在本地机器上select一个空的文件夹。
- select您新build的传输设置预设。
- 最后,按Ctrl + U(命令>保持远程目录是最新的),并确保选中“同步启动”和“更新子目录”。
从此,WinSCP将保持您的更改同步。
使用SublimeText在本地文件夹中工作。 只要确保Sublime Text被设置为猜测正在编辑的文件的行尾。
齐奏
我发现,如果源码树很大(大约几百MB,层次较深),那么上面描述的WinSCP方法可能会有点慢。 使用Unison可以获得更好的性能。 Unison不是自动的(你需要用按键触发它),并且需要一个服务器组件在你的linux机器上运行。 最重要的是,传输速度非常快,非常可靠,忽略文件,文件夹和扩展名非常容易设置。
作为@ ubik的答案的后续,这里有三个简单的(一次性)步骤来获得在您的远程服务器上的'subl'命令:
- [ Local ]使用Sublime Package Manager在Sublime Text中安装
rsub
软件包 -
[ 本地 ]执行下面的Bash命令(这将build立一个SSH隧道 ,这是rsub的秘密):
printf "Host *\n RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
-
[ 服务器 ]在远程服务器上执行以下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上,对我来说最方便的方法就是使用免费的CyberDuck (也可用于Windows)。 您可以连接到您的远程SSH文件系统,并使用本地编辑器编辑您的文件。 CyberDuck所做的是将文件下载到本地操作系统的临时位置,并使用您的编辑器打开它。 一旦保存文件,CyberDuck自动将其上传到远程系统。 这似乎是透明的,就像你使用本地编辑器编辑远程文件一样。
你可以试试我一直在做的一些叫做“ 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需要什么。 这些是简单的说明
-
打开WinSCP.exe并login到我想要的远程服务器(我有
发现在连接之前login是很重要的…)。 -
在WinSCP的首选项 – 两个设置改变。 select资源pipe理器types的界面,而不是指挥官 – 所以你看不到本地文件。 除非你想(但是看起来像在这里吸)。 设置崇高作为您的默认编辑器。
-
打开ConEmu,右键单击标签栏,然后select
Attach to...
选项。 一个对话框将打开您的正在运行的应用程序。 selectWinSCP并select确定。 ConEmu现在将有一个打开的选项卡,WinSCP显示您的远程文件。 -
右键单击WinSCP选项卡,然后select
New console...
当对话框打开时,在系统上inputSublime可执行文件的path。 在按下“Start
之前,在“New console split
”框中selectto right
的单选button并设置百分比。 我通常会select75%,但是您可以根据自己的喜好进行自定义,稍后可以更改。- 现在你将在WinSCP右边的同一个窗口中看到Sublime。 在Sublime中,从View菜单中,select
Sidebar->Hide Sidebar
,然后bam,你现在有了和你在本地一样的远程文件 – 当然有几个需要远程编辑的注意事项。 WinSCP虽然闪电很快。
- 现在你将在WinSCP右边的同一个窗口中看到Sublime。 在Sublime中,从View菜单中,select
我有两台显示器 – 左侧显示器的Chrome浏览器,右侧显示器显示代码编辑器。 同样在ConEmu
,我创build了另一个选项卡和ssh到我正在工作的站点,所以我可以做一些事情,比如远程运行gulp
或grunt
,还可以从命令行操作文件。 认真加快发展。
这里有一个截图:
我一直在做一个名为GiySync的项目。 它仍然需要一些工作,但它是开源的,我每天都在使用它几年。 我也在研究一个我称之为GitSyncApp的原生OS X版本
现在只是OS X,但应该很容易添加对Linux的支持,也可能是Windows。
它通过监视文件系统事件工作,并使用git来同步本地机器和服务器上的项目文件夹。
我尝试了其他解决scheme,如osx保险丝,扩展驱动器,传输,使用rsync的几个解决scheme等。他们都为小项目“OK”,但如果你使用了大量的代码,他们不为我工作。
很多文件系统选项都会caching来提高性能,这很好,直到没有。 就好像你在和其他人一起工作,而别人在服务器上改变文件。
如果我在一个空白或慢的networking中,我最终会遇到空文件,我也遇到了问题。 或没有同步的文件,那么caching变得很奇怪; 希望你最近承诺。 使用git解决了这个问题,因为它检查每个提交的完整性。
两个奖金function:
- 你最终会提交一个保存。 这不是超级有用,但如果你必须回到过去,你可以。
- 它适用于任何文本编辑器。
根据您的具体需求,您可以考虑使用BitTorrent Sync。 在家用电脑和工作电脑上创build一个共享文件夹。 编辑家庭电脑上的文件(使用Sublime或任何你喜欢的),当你保存时,它们会自动同步。 BitTorrent Sync不依赖存储文件的中央服务器(Dropbox等),所以理论上应该清除由于第三方存储敏感信息而引起的任何问题。
一个非常适合我的解决scheme – 在Mac上进行本地编辑,并将文件自动同步到远程机器上
-
确保您有无密码login到远程机器。 如果没有,请按照下列步骤操作http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/
-
在〜/ 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>
-
在terminal窗口运行
launchctl load ~/Library/LaunchAgents/filesynchronizer.plist
-
而已。 对〜/ SyncDirectory中任何文件的任何更改都将同步到远程计算机上的〜/ SyncDirectory。 本地更改将覆盖所有远程更改。
这将创build一个监视SyncDirectory的启动作业,并且每当发生任何更改时都会运行rsync将该目录同步到远程计算机。
lsyncd似乎是sshfs方法的不错select。 如果你使用“-delay 0”,它实时工作。