如何在 Vim 普通模式下绑定一个键来执行 tmux 命令?

How bind a key to execute a tmux command in Vim Normal mode?

我使用 tmux 终端多路复用器,我有这个简单的布局:

我有一个用于代码编辑的 Vim 面板和一个用于构建和搜索代码及其他内容的终端。

你可能知道,当我在 Vim 窗格中时,我可以按 Ctrl+BZ 缩放 Vim 窗格,再按一次可缩放回原始布局。

现在想知道在Vim的普通模式下绑定Esc是否可以发送Ctrl+ BZ 缩放 Vim 窗格?

像其他 IDE 一样,按 Esc 会隐藏除代码编辑器之外的所有内容?

您可以使用 vim 中的 :!<cmd><cmd> 传递给 shell,因此:

:!tmux resize-pane -Z

将切换 vim 窗格的缩放状态。
然后你只需要重新映射 Esc:

:nnoremap <Esc> :!tmux resize-pane -Z<CR><Esc> 

然而,每次您按下 Esc 时都会切换到缩放状态(因此实际上有一半时间会显示其他窗格)。

我猜你希望 vim 保持最大化,所以(感谢 this post 识别窗格是否缩放):

:nnoremap <Esc> :silent! exec "!if \! tmux list-panes -F '\#F' \| grep -q Z; then tmux resize-pane -Z; fi"<CR>:redraw!<CR><Esc>