我使用vim作为我的IDE和它里面的标签。我没有用gt,gT来改变标签,我Map了Ctrl PageUp和Ctrl PageDown,所以我的.vimrc
看起来像这样:
nnoremap <C-PageUp> gT
nnoremap <C-PageDown> gt
它在tmux之外工作得很好...但是,当我从tmux内部打开Vim时,并尝试使用Ctrl PageUp或Ctrl PageDown来更改制表符,但它没有,它将光标下的当前单词括在括号中,并将其部分大写...但它不会更改vim中的制表符。我检查了tmux键绑定,如果有任何东西绑定到C-PageUp或C-PageDown,但没有任何东西。我仍然尝试在.tmux.conf中像这样解除绑定,但是不起作用:
unbind-key C-PageUp
unbind-key C-PageDown
在vim中用gt和gT改变标签页即使在tmux里面也能很好地工作,但是我太习惯于使用Ctrl PageUp/Down了,所以我想保留它。
关于奇怪的行为...
当在tmux的vim中,如果我的光标在单词function
的字母t
上,并且我按下Ctrl PageUp或Ctrl PageDown,单词function就会变成[funcTION]
。
inoremap [<cr> [<cr>]<c-o><s-o>
inoremap [ []<left>
inoremap <expr> ] strpart(getline('.'), col('.')-1, 1) == "]" ? "\<Right>" : "]"
nnoremap [ mmbi[<esc>ea]<esc>`m<right>
vnoremap [ <Esc>`<i[<Esc>`>a<right>]<Esc>
它们都处理右方括号的插入(如果你打开一个方括号,一个结束的一个会自动放在屏幕上)。我有相同的括号,花括号,引号等,第4个允许我进入VIM正常模式按[
,它会把这个词括在括号里,这就是为什么我认为这可能会影响标签的变化,不知何故,但我注解了所有这些行,但没有任何帮助。
所以,我的问题是,我如何识别是什么劫持了我的键绑定,并可能发送其他东西给vim?因为它只发生在tmux内部,我认为tmux config将是一个强有力的候选人作为劫持者。
我正在使用的:VIM 8.1多路复用器3.0a
编辑:终端中Ctrl PageDown的描述,有和没有tmux,在vim中有和没有.vimrc加载x1c 0d1x
1条答案
按热度按时间gkn4icbw1#
我终于找到了。显然tmux(屏幕)的默认终端不支持扩展键,比如Ctrl PageDown,所以你必须改变你的默认终端。对我来说,它可以用xterm-256 color。为此,你可以把它添加到.tmux.conf
set -g default-terminal xterm-256color
中。关于它的讨论在这里