如何在 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>
我使用 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>