如何使用Control +箭头切换屏幕中的vim选项卡?

时间:2017-07-09 17:30:57

标签: vim screen

我已将vim配置为使用控件+箭头通过在.vimrc中添加以下行来切换标签:

map <F7> :tabp<cr>
map <F8> :tabn<cr>
map <C-up> :tabr<cr>
map <C-down> :tabl<cr>
map <C-left> :tabp<cr>
map <C-right> :tabn<cr>

屏幕中,<F7><F8>有效,但控件+箭头却没有...

知道为什么吗?以及如何解决?感谢。

1 个答案:

答案 0 :(得分:2)

我不确定它是否可行,但您可以尝试将此代码包含在vimrc中:

if &term =~ '^screen'
    sil! exe "set <xUp>=\e[1;*A"
    sil! exe "set <xDown>=\e[1;*B"
    sil! exe "set <xRight>=\e[1;*C"
    sil! exe "set <xLeft>=\e[1;*D"
endif

我是从here复制的。

如果您使用tmux,您可能还需要在tmux配置文件(xterm-keys)中启用选项~/.tmux.conf

set-option -gw xterm-keys on

man tmux中描述:

 xterm-keys [on | off]
         If this option is set, tmux will generate xterm(1) -style function key sequences; these have a
         number included to indicate modifiers such as Shift, Alt or Ctrl.  The default is off.

我不知道screen的等价物是什么。

在Vim之前,某些东西(窗口管理器,终端多路复用器,终端仿真器)也可能正在拦截<C-left>

要排除这种可能性,您可以尝试在插入模式下键入<C-left>,将C-v C-left字面插入Vim缓冲区,然后查看它显示的内容。在我的计算机上,它显示^[[1;5D,因此我知道没有任何内容拦截<C-left>

如果未显示任何内容,则必须找到拦截<C-left>的软件并删除其配置中的密钥绑定。