【问题标题】:From an SSH session to a remote machine, how do I open a file in a Vim session on my local machine从 SSH 会话到远程机器,如何在本地机器上的 Vim 会话中打开文件
【发布时间】:2020-08-14 19:31:31
【问题描述】:

我在终端窗口中有一个到远程机器的 ssh 连接,并且 GVim 作为我的文本编辑器在本地运行。我可以通过 SSH 挂载远程机器并在本地 Vim 中打开文件。通过 Vim 对通过 SCP 进行编辑的支持,我还可以在本地 Vim 中编辑远程文件。

假设我然后在远程机器上使用ag 在我的项目中搜索符号:

[user@remote project]$ ag thingy
include/blah/foo.h
1137:void thingy() {

现在我可以在我的 SSH 会话中输入什么来将该文件发送到选项卡中的本地编辑器?如果我在本地机器上,我可以做类似gvim -p --remote-tab-silent include/blah/foo.h 的事情,但我不认为 Vim +clientserver 远程系统可以通过 SSH 会话转发,可以吗?如果我设置 X11 转发,它会以某种方式神奇地工作吗?如果是这样,Vim 将如何确定要连接到哪个远程服务器来编辑文件?嵌入 vim 的终端会话和我可以使用的 netrw 系统之间是否存在某种集成?

如果我想使用 shell 脚本和 netcat 以及通过 ssh 转发某种类型的套接字来滚动我自己的系统,我该如何设计呢?

【问题讨论】:

  • 我不完全确定这是 SO 的主题,但我们确实有其他几个奇怪的 vim 技巧问题和一个活动的 vim 标签,即使使用 Vim 并不完全相同作为编程。还有其他更适合的 SE 网站吗?
  • 我认为您可以轻松地使用本地 GVim 中的 netrw 打开远程文件,但反之则不行。
  • Neovim 内置了基于 TCP 的 RPC。 Vim 不能这样做。

标签: vim ssh x11-forwarding


【解决方案1】:

Linux 和 Unix 系统上的+clientserver 机制使用 X11:

客户端和服务器之间的通信是通过 X 服务器进行的。这 必须指定 Vim 服务器的显示。 X的通常保护 使用服务器,您必须能够在 X 服务器上打开一个窗口 沟通工作。不同的人之间可以交流 系统。

如果你正确设置了 X 转发,你应该可以打开文件,虽然我没有测试过。这意味着远程系统应该有一个$DISPLAY 环境变量。

如果您没有明确指定服务器名称,它通常位于窗口的标题栏中。第一个,在我的 Debian 系统上,是GVIM,下一个是GVIM2,等等。客户端/服务器参数需要以特定顺序在命令行上,并且首先在命令行上。我会尝试在本地机器上进行设置,然后再在远程机器上尝试。

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多