我用连接到远程机器ssh user@192.168.1.5
.当我需要在远程机器中打开文件时,例如,
emacs /usr/share/nginx/html/index.html
并index.html
在shell 中打开文件.我注意到一些emacs命令工作但其他命令不起作用.例如,C-w
不起作用; M-<
不起作用.我该如何解决这个问题,使用emacs和ssh的最佳方法是什么?
我发现了这个问题,但它让我更加困惑.
并添加到@ abo-abo关于"快捷方式"的帖子 -
使用Emacs书签. 只需在访问远程文件或目录时正常创建书签.然后只需使用C-x r b
跳转到您提供其名称的远程书签(完成).
如果您使用Bookmark +,则会特别突出显示远程书签*Bookmark List*
,因此您可以更轻松地识别它们.必须由su
或sudo
(root
)访问的远程书签以不同方式突出显示.
如果您使用Dired +,那么您还可以通过访问Dired中包含的远程目录,标记它们并点击来快速为多个远程文件或目录添加书签C-x b
.无需给出书签名称; 它们以文件命名.即使您从未使用这些书签导航到远程文件,您也可以将它们与Bookmark + 标签一起使用来组织文件,从而对它们的子集进行操作.
如果您使用的冰柱那么无论你使用一个命令跳转到书签,您可以缩小完成候选人那些击中是远程C-M-@
完成时.
我通常更喜欢从本地Emacs实例打开远程文件.
在本地计算机上运行Emacs时,通过ssh打开远程文件与打开除了略有不同的语法之外的任何其他文件没有太大区别.
对于ssh,您可以输入C-x C-f
.现在,在您要键入的minubuffer中/ssh:user@host:/path/to/file
(请注意,一旦开始键入路径,选项卡完成将起作用.还要注意前导/
字符).请在此处查看完整文档.
在您的示例中,那将是:
C-x C-f /ssh:user@192.168.1.5:/usr/share/nginx/html/index.html
现在,您可以使用本地配置和任何已安装的软件包等在Emacs中通过ssh编辑远程文件...
只是为了添加上面的答案,您可以为经常使用的机器编写快捷方式:
(defun connect-remote () (interactive) (dired "/user@192.168.1.5:/"))
这将dired
在远程计算机上打开缓冲区.您可以像在本地缓冲区一样导航此缓冲区.
如果您已为远程计算机设置了ssh密钥,则甚至无需输入密码.
如果你有一堆远程机器,你可以为每个功能提供一些可识别的名称,例如connect-cupcake
,connect-kitkat
并使用smex
包完成.
原始发布者表示有兴趣以root用户身份打开远程文件。可以使用以下命令完成此操作:
C-x C-f /ssh:you@remotehost|sudo:remotehost:/path/to/file RET
可以在这里找到更多文档:https : //www.emacswiki.org/emacs/TrampMode#toc14