vim中的键特定超时
是否可以根据键入的键设置不同的timeoutlen? 例如,我的vim中的键特定超时,vim,Vim,是否可以根据键入的键设置不同的timeoutlen? 例如,我的重新映射到jk或jj set timeoutlen=200 但是如果我从一个开始,我希望这个时间更长,因为我有一些映射需要按一系列键,它们不像jk那样容易键入,没有内置的。关于映射,您可能指的是:inoremap jj,为了快速应用,您只需确保没有其他插入模式映射以jj开头。为避免第一个j仅延迟出现,您可以使用:autocmds切换的'timeoutlen'值: :autocmd InsertEnter * set timeout
重新映射到jk
或jj
set timeoutlen=200
但是如果我从一个
开始,我希望这个时间更长,因为我有一些映射需要按一系列键,它们不像jk
那样容易键入,没有内置的。关于映射,您可能指的是:inoremap jj
,为了快速应用,您只需确保没有其他插入模式映射以jj
开头。为避免第一个j
仅延迟出现,您可以使用:autocmds
切换的'timeoutlen'
值:
:autocmd InsertEnter * set timeoutlen=200
:autocmd InsertLeave * set timeoutlen=1000
Ingo Karkat提出的解决方案将影响所有插入模式映射,因此它可能会破坏定义其他插入模式映射的插件,而这些插件很难在如此短的时间内键入 为了在不落后的情况下摆脱插入模式,我找到了一种更聪明的方法,这将导致插件 退出插入模式的默认快捷方式是
jk
,您可以通过以下选项进行更改:
let g:better_escape_shortcut = 'jj'
let g:better_escape_interval = 200
它将计算按下快捷方式中第一个字符和第二个字符之间的时间间隔(默认值为150毫秒)。如果您快速按下这两个字符,您将离开插入模式。否则,字符将按字面形式书写。要调整时间间隔,请使用以下选项:
let g:better_escape_shortcut = 'jj'
let g:better_escape_interval = 200
所以它的基本功能是,为插入和其他模式设置单独的超时长度,对吗?我唯一以
j
开头的映射是:inoremap jk
和:inoremap jj A代码>。这是我在插入模式下仅有的映射,其余的是普通或可视的映射。是的,没错。对于autocmds,直到出现j
的延迟应较小。