如何ssh到远程服务器并使用本地emacs编辑文件?


8

有没有一种方法可以使用安装在本地计算机上的emacs访问远程服务器中的远程文件?我已经用谷歌搜索,发现我应该使用TrampMode,但是我必须知道确切的文件路径。我没有办法打开与远程服务器的ssh连接,然后从那里用计算机中的本地emacs打开文件吗?

Answers:


5

有多种方法可以执行此操作,但是通常情况下,您会向后处理此问题。将您的emacs配置复制到远程机器上,并使用本地emacs编辑您的文件。

“执行此操作的各种方法”将分为两类。首先是通过sshfs,某些保险丝文件系统,samba,nfs或任何其他数量的其他安装系统在本地安装远程驱动器的方法,以使文件级访问您的计算机成为可能。其次是各种程序,它们使您可以登录和浏览远程系统,然后通过将文件的副本传输到本地临时文件,对其进行编辑然后再传输回文件来对其进行操作。几个程序使该过程看起来非常无缝,但这是一个hack。


1
“有几个程序使该过程看起来很无缝,但这是一个hack。”:这就是Tramp(当今随Emacs一起提供)的目的。这不是黑客,而是使用远程文件的自然方法。
吉尔(Gilles)“所以,别再邪恶了”,

@吉尔斯:我一无所知Tramp,所以我的“ hack”授权一定不需要适用。我特别在想各种文件管理器程序,这些程序具有菜单项,例如“在编辑器中打开”。尽管这些方法可以使文件打开,但是它们通常在需要复制,修改,复制回文件等方式上比较脆弱。在关闭编辑器之前保存中间文件的过程通常不会向上游推送,这使它们难以使用在文件上。如果您知道解决Tramp@starcorn 限制的方法,请添加另一个答案!
Caleb

1
使用Tramp,编辑器可以完成工作,因此它知道在保存时进行推送等。理想的解决方案是使emacsserver和ssh互操作,但这很难。我将提供的两个变通方法是sshfs和eshell,两者都已提到。
吉尔(Gilles)“所以,别再邪恶了”,

2

或者,您可以打开emacs,运行eshell,然后cd到远程计算机,例如:

cd /hostname:~

现在,运行shell命令,导航到所需文件并打开它:

find-file filename

2

我确实认为Tramp是您想要的。您可以使用Dired模式浏览远程目录并查找所需的文件。

例如,如果要在/etc/远程计算机上查找某些文件,rem请执行以下操作:

  • 打开emacs
  • 击中 C-x C-f
  • 删除已经存在的路径
  • 输入/rem:/etc/并按Enter。

您将获得如下输出:

/ssh:rem:/etc:
total 1460
drwxr-xr-x 141 root root    12288 Aug 12 06:46 .
drwxr-xr-x  23 root root     4096 Jul 18 23:48 ..
drwx------   6 root root     4096 Nov 17  2009 .bzr
-rw-------   1 root root      749 Jul 18 23:30 .bzrignore
-rwx------   1 root root    10015 Aug 12 09:17 .etckeeper
drwxr-xr-x   3 root root     4096 Aug  6 00:47 .java
-rw-------   1 root root        0 Nov 17  2009 .pwd.lock

然后,您可以使用例如箭头键找到您要编辑的文件。当光标位于文件上时,按Enter键进行编辑。

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.