vim中特定于键的timeoutlen

时间:2014-11-09 14:11:41

标签: vim

是否可以根据键入的键设置不同的timeoutlen? 例如,我的<Esc>重新映射到jkjj

的时间很短
set timeoutlen=200

但如果我从<leader>开始,我希望将此超时时间延长,因为我有一些需要按键序列的映射,这些键不像{{1 }}

2 个答案:

答案 0 :(得分:6)

没有任何内置功能。关于您的映射,您可能意味着:inoremap jj <Esc>,为了快速应用,您只需要确保没有其他插入模式映射 jj开头。为避免第一个j仅出现延迟,您可以使用:autocmds来切换'timeoutlen'值:

:autocmd InsertEnter * set timeoutlen=200
:autocmd InsertLeave * set timeoutlen=1000

答案 1 :(得分:0)

Ingo Karkat提出的解决方案将影响所有插入模式映射,因此它可能会破坏定义其他插入模式映射的插件,而这些插件很难在很短的时间内键入。

为了逃避插入模式而没有滞后,我找到了一种更聪明的方法,该方法可以生成插件better-escape.vim

转义插入模式的默认快捷方式是jk,您可以通过以下选项进行更改:

let g:better_escape_shortcut = 'jj'

它将计算在快捷方式中按下第一个字符和第二个字符之间的时间间隔(默认为150毫秒)。如果快速按下这两个字符,将退出插入模式。否则,字符将按原样书写。要调整时间间隔,请使用以下选项:

let g:better_escape_interval = 200