在tmux内部时Vim密钥绑定失败

toiithl6  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(160)

我使用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

gkn4icbw

gkn4icbw1#

我终于找到了。显然tmux(屏幕)的默认终端不支持扩展键,比如Ctrl PageDown,所以你必须改变你的默认终端。对我来说,它可以用xterm-256 color。为此,你可以把它添加到.tmux.conf set -g default-terminal xterm-256color中。关于它的讨论在这里

相关问题