【发布时间】:2020-03-14 14:57:31
【问题描述】:
在我的工作流程中,我映射了 ctr+right 和 Ctr+left 来切换 VIM 中的缓冲区。但是,每当我到达终端缓冲区时,终端都不会移动到下一个缓冲区。我认为关键不是交给vim,而是用term。如何使某些键通过终端,这样我就可以在没有鼠标的情况下切换缓冲区?我正在使用带有 GVIM 8.2 的 Windows 10。
【问题讨论】:
标签: vim
在我的工作流程中,我映射了 ctr+right 和 Ctr+left 来切换 VIM 中的缓冲区。但是,每当我到达终端缓冲区时,终端都不会移动到下一个缓冲区。我认为关键不是交给vim,而是用term。如何使某些键通过终端,这样我就可以在没有鼠标的情况下切换缓冲区?我正在使用带有 GVIM 8.2 的 Windows 10。
【问题讨论】:
标签: vim
这可能发生在您的终端处于终端插入模式时,捕获击键并将它们发送到终端内运行的程序。
您仍然可以使用:tnoremap 命令为这些键创建映射。见:help :tnoremap 和:help mapmode-t。
例如:
tnoremap <C-Left> <C-w>h
tnoremap <C-Right> <C-w>l
(不确定这些是您在正常模式下使用的实际映射,或者您是否使用<C-w>W 和<C-w>w。无论如何,您明白了,使用tnoremap 在终端中复制映射- 插入模式也是如此。)
更新:根据您的评论,您正在使用这些映射切换缓冲区,因此这些应该可以工作:
tnoremap <C-Left> <C-w>:bp<CR>
tnoremap <C-Right> <C-w>:bn<CR>
这些与普通模式映射不同,因为它们需要 <C-w> 前缀,这是从终端插入模式下的终端输入 Ex 命令所必需的。
【讨论】: