当窗格失去焦点时,我可以让 Tmux 告诉 Vim 吗?

Pee*_*eja 6 vim tmux

我在 Tmux 中并排使用 Vim 和 Bash。我已将 Vim 配置为在文件之间切换时自动保存文件,但我真的很喜欢它在切换到 Bash 窗格时自动保存。

当窗格失去焦点时,有没有办法让 Tmux 向 Vim 发送某种代码?

Chr*_*own 6

这可能最好使用vim的客户端-服务器模型来完成。有一些关于在:help remote.txt.

首先,您需要一个vim使用该+clientserver选项编译的客户端。如果您的发行版没有以这种方式打包,请获取源代码(通过apt-get sourceabs、 等)并添加该选项。

完成后,您需要重新绑定密钥,tmux以便在更改窗口时它还会向活动窗口发送类似以下内容:

vim --servername foo --remote-send '<C-\><C-N>:w<CR>'  
Run Code Online (Sandbox Code Playgroud)

类似以下的内容应该可以工作(未测试):

bind-key 0 run-shell "vim --servername foo --remote-send '<C-\><C-N>:w<CR>'" \; select-window -t :0
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的方向,但是切换窗格的方法太多了。我可能会选择“选择窗格”、“最后一个窗格”、“交换窗格”,甚至单击某个窗格。切换到不同窗口的方法有很多。我无法重新绑定所有可能的方式来激活不同的窗格。那么,我正在寻找一种方法,让命令在每次激活窗格时运行。也许这在“tmux”中是不可能的。 (2认同)