Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vim中的键特定超时_Vim - Fatal编程技术网

vim中的键特定超时

vim中的键特定超时,vim,Vim,是否可以根据键入的键设置不同的timeoutlen? 例如,我的重新映射到jk或jj set timeoutlen=200 但是如果我从一个开始,我希望这个时间更长,因为我有一些映射需要按一系列键,它们不像jk那样容易键入,没有内置的。关于映射,您可能指的是:inoremap jj,为了快速应用,您只需确保没有其他插入模式映射以jj开头。为避免第一个j仅延迟出现,您可以使用:autocmds切换的'timeoutlen'值: :autocmd InsertEnter * set timeout

是否可以根据键入的键设置不同的timeoutlen? 例如,我的
重新映射到
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
的延迟应较小。