Vim的插入叶滞后
我在我的Vim的插入叶滞后,vim,statusline,Vim,Statusline,我在我的.vimrc中有这些行,用于更改Vim插入模式的状态行的颜色。状态行快速响应InsertEnter。但是,对于InsertLeave,在--INSERT--消失和StatusLine中的颜色更改之间大约有1秒的延迟。我可以得到一些帮助吗 set laststatus=2 if version >= 700 au InsertEnter * hi StatusLine term=reverse ctermbg=15 ctermfg=22 au InsertLeave * hi
.vimrc
中有这些行,用于更改Vim插入模式的状态行的颜色。状态行快速响应InsertEnter
。但是,对于InsertLeave
,在--INSERT--
消失和StatusLine中的颜色更改之间大约有1秒的延迟。我可以得到一些帮助吗
set laststatus=2
if version >= 700
au InsertEnter * hi StatusLine term=reverse ctermbg=15 ctermfg=22
au InsertLeave * hi StatusLine term=reverse ctermbg=16 ctermfg=0
endif
我尝试了:au Insertleave
,但只显示了一个命令:
--- Auto-Commands ---
InsertLeave
* hi StatusLine term=reverse ctermbg=16 ctermfg=0
感谢您的帮助
谢谢Vim看不出您正在退出插入模式,因为它看到的只是一个转义。箭头键通常设置为由终端vim解释为
OA
、OB
、OC
、和OD
。所以vim在做任何事情之前都在等待序列中的下一个键。这也是如果键入O
时,O
只在屏幕上停留一秒钟,而不是在当前行上方打开新行的原因
Vim使用timeoutlen
确定按键之间的等待时间。默认设置为1000毫秒。如果需要,您可以减少该值,但是这会使键入映射更困难
如果您在某些映射之外的单词后立即键入某些内容,则autocmd也会启动得更快
要查看的相关选项有:h timeout
,:h ttimeout
,:h timeoutlen
,和:h ttimeoutlen
,您只能在按下Escape键时使用当前vim的函数来执行命令,而不是在序列内部(箭头移动、键绑定等)
函数condinsertlave()
如果模式()=“n”
hi StatusLine term=reverse ctermbg=16 ctermfg=0
恩迪夫
端功能
autocmd InsertLeave*调用计时器\u start(200,{tid->condinertleave()})
function <SID>condInsertLeave()
if mode() == "n"
hi StatusLine term=reverse ctermbg=16 ctermfg=0
endif
endfunction
autocmd InsertLeave * call timer_start(200, { tid -> <SID>condInsertLeave()})