timeoutlen
inoremap jj
当您键 入jvim 时,将等待 timeoutlen。不是因为终端键码的开头 j 未完成,而是因为它正在等待下一个组合键的 Vim 键码。默认是 1000,即 1 s。
ttimeoutlen
第一个t应该是terminal的意思。
ttimeoutlen 是 Vim 会等待一个终端键码的不同部分(例如shift+down:^[[1;2B,是 ^[ 再 [ 然后 1,等等)。
由于这些键码是由终端发送的,因此这些输入之间不应有延迟(因为它们是由终端“一次性”发送的)。这就是为什么文档为这个设置推荐一个非常小的值。
timeoutlen 是 Vim 将等待用户手动输入的连续 Vim 键码的时间,因此输入的时间比终端键码长。
举个例子,让我们说:
你映射^[[1;6B到一个动作
^[1;6B 是您终端的键码 ctrl+shift+down
^[是您终端的键码Escape。
如果你设置了一个大的ttimeoutlen,每次你输入时Escape,Vim 会等着看你的意思是^[(Escape) 还是^[1;6B(ctrl+shift+down)
如果你设置了一个 small ttimeoutlen,你在输入时不会有延迟,因为 Vim 会知道它是一个完整的键码。默认是-1,表示与 timeoutlen 参数一致,即默认的1s。可设置为10毫秒(其实1毫秒就行,立即超时)1毫秒不一定行,在网络不好的情况下,这个时间可能需要延长。。
键码(其实就是key code)
如果您的终端发送 Vim 无法理解的键码
set <S-F1> ^[[24~
映射键序列(可以用 vim key code,也可以 terminal key code)
:nmap ^[[24~ :bn<CR>
:nmap <S-F1> :bn<CR>
1、bn=buffer next。
2、CR=carriage return=enter,执行的意思。
转载请注明:牛哥678 » vim: timeoutlen and ttimeoutlen