![是否可以通过 SSH+tmux 运行 Vim 客户端服务器实例](https://linux22.com/image/16307/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%20SSH%2Btmux%20%E8%BF%90%E8%A1%8C%20Vim%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E4%BE%8B.png)
我已经成为 vim 迷一年左右了,我已经记住了一些很棒的小技巧。我在 Ubuntu 上的终端上(在办公室)进行了大量开发。
我最看重的事情之一是让 tmux 处理我的会话,这样如果 Gnome 或其他任何东西决定退出,那么我就不会失去任何东西。
此外,我运行一个 vim 客户端服务器(Cb :neww 'vim --servername d')作为我的 tmux 窗口之一,并使用它来接收我想要使用的任何文件,同时我让其他 tmux 窗口执行各种工作。这意味着我可以打开一个 vim,而不会混淆我正在编辑的内容。
当我远程工作(通过 SSH)时,我连接到 tmux 会话并继续,但我有一个问题:vim 不会启动客户端服务器实例。
我认为它与 X 相关,但我似乎无法找到本地 tmux 和通过 ssh 的 tmux 之间的区别。
答案1
是的,它使用 X 属性进行通信。尝试使用 -X 选项运行远程 SSH 会话以允许 X11 转发。您可能还必须在服务器端启用该功能。您可能还需要手动调整 DISPLAY 环境变量(为“localhost:10.0”),因为现有会话从启动时起就已经拥有您的本地环境变量。
答案2
这确实更适合作为对 @keith 的评论,但我想详细说明一下:
.ssh/config
他的答案在连接时用一个简单的 -X 完美解决了这个问题,但我通过添加到我的文件中更进一步:
Host mydevserver.example.com
ForwardX11 yes
此外,我很想研究对我经常使用的位于异地的无头开发服务器重复此操作。
- 我用 yum 安装了最基本的 X11 组件: yum group install 'X11 Desktop Environment'
- 在我的 zsh 别名文件中创建了一个别名以按需启动 X(性能在开发机器上仍然很重要!)
alias initFakeDisplay=startx -- /usr/bin/Xvfb :2 -screen 0 1024x768x24 &
然后将来,我可以在启用 X11 转发的情况下进行连接,并使用相同的 tmux+vim 技术来运行 vim 客户端服务器