vim的ternimal的箭头无法使用的问题
2018-12-12 本文已影响0人
梦落迹南天
vim 8.1中的支持在buffer中打开ternimal,但是使用箭头复现上一条指令的时候,会跳转到normal模式,然后报 “: E21:Cannot make changes, 'modifiable' is off"的问题,这是因为在该版本的打开ternimal模式下,使用箭头的时候会触发一个以按键"ESC"开始的指令序列,详情请见->跳转,所以会直接跳到normal模式
目前还没有修复该问题,但社区提供了解决的方法,<ESC>跳到normal模式是因为设置了在终端模式下的映射,也就是按下ESC的时候,其实是触发了 ctrl+w+n,从而进入到normal模式
tnoremap <ESC> <C-W> N
而按下箭头之后本来是应该触发下面某个指令序列的功能,但是因为某种原因直接触发了上面的了
tnoremap <up-arrow> <ESC>.....
解决方法
如果使用了spacevim作为配置,则在配置文件.Spacevim/autoload/Spacevim/default.vim 中会执行的地方加入如下内容,否则找到default.vim,将以下内容加入
tnoremap <ESC> <C-W>N
tnoremap <ESC><ESC> <C-W>N
set timeout timeoutlen=1000
set ttimeout ttimeoutlen=100
大致意思是,增加了一个两次<ESC>的快捷键,所以当输入第一个<ESC>的时候,系统觉得你可能是需要连续输入两个<ESC>,所以还会等一下(下方设置的超时时间),如果没有的话,就直接执行单个<ESC>对应的指令序列