我使用ssh user@192.168.1.5
连接到远程计算机。当我需要在远程机器中打开文件时,例如,
emacs /usr/share/nginx/html/index.html
然后打开shell中的index.html
文件。我注意到一些emacs命令工作,但其他命令不起作用。例如,C-w
不起作用; M-<
不起作用。我该如何解决这个问题,使用emacs和ssh的最佳方法是什么?
我找到了this question,但这让我更加困惑。
答案 0 :(得分:118)
我通常更喜欢从本地Emacs实例打开远程文件。
在本地计算机上运行Emacs时,通过ssh打开远程文件与打开除different syntax之外的任何其他文件没有太大区别。
对于ssh,您可以输入C-x C-f
。现在,在minubuffer中,您要键入/ssh:user@host:/path/to/file
(请注意,一旦开始键入路径,选项卡完成将起作用。另请注意前导/
字符)。查看完整的docs here。
在您的示例中,那将是:
C-x C-f /ssh:user@192.168.1.5:/usr/share/nginx/html/index.html
现在,您可以使用本地配置和任何已安装的软件包等在Emacs中通过ssh编辑远程文件...
答案 1 :(得分:22)
只需添加上面的答案,您就可以为您使用的计算机编写快捷方式 频繁:
(defun connect-remote ()
(interactive)
(dired "/user@192.168.1.5:/"))
这将在远程计算机上打开dired
缓冲区。您可以导航此缓冲区
就像你当地人一样。
如果您为远程计算机设置了ssh密钥,则甚至不必输入密码。
如果你有一堆远程机器,你可以提供一些可识别的名称
对于每个功能,例如connect-cupcake
,connect-kitkat
并使用smex
包完成。
答案 2 :(得分:15)
并添加到@ abo-abo关于“快捷方式”的帖子 -
使用Emacs书签。 只需在访问远程文件或目录时正常创建书签。然后只需使用C-x r b
跳转到您提供其名称的远程书签(完成)。
如果您使用Bookmark+,则*Bookmark List*
会特别突出显示远程书签,以便您更轻松地识别它们。必须由su
或sudo
(root
)访问的远程书签以不同方式突出显示。
如果您使用Dired+,那么您还可以通过访问Dired中包含的远程目录,标记它们并点击C-x b
来快速为多个远程文件或目录添加书签。无需给出书签名称;它们以文件命名。即使您从未使用这些书签导航到远程文件,也可以将它们与书签+ tags一起使用来组织文件,从而对它们的子集进行操作。
如果您使用Icicles,那么每当您使用命令跳转到书签时,您可以通过在完成期间点击C-M-@
将完成候选者缩小到远程候选者。
答案 3 :(得分:5)
原始海报表示有兴趣以root用户身份打开远程文件。这可以通过以下命令完成:
import sys
try:
import pandas as pd
except ImportError:
pass
@pytest.mark.skipif('pandas' not in sys.modules,
reason="requires the Pandas library")
def test_pandas_function():
...
答案 4 :(得分:3)
专注于远程机器的简单答案:
如果我计划在远程计算机上运行所有emacs,我使用
ssh -X username@hostname
然后在远程会话中运行emacs,在我的本地计算机上显示。这是一个古老的问题,但我想把它完全抛弃。虽然有一些xhost / X配置问题,但在许多网络中,这将立即起作用!
答案 5 :(得分:1)
SSH mode for emacs正是您要找的。 p>
设置完成后,只需运行
即可M-x ssh RET hostname RET
然后它会提示您输入两次密码(一次用于命令行,一次用于加载文件)。
在大多数情况下,你可以像对待任何其他shell一样对待它(非交互式和一些细微差别,但就是这样)。
它会跟踪您所在的目录,因此当您想要从您正在查看的目录中打开文件时,它会自动从正确的目录开始,您只需要输入文件名。
Emacs Wiki也有更多信息。