最新消息:

vim: timeoutlen and ttimeoutlen

vim niuge678 1126浏览 0评论

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 无法理解的键码,您可以使用以下命令,这将告诉 Vim 当您收到键码时^[[24~,将其翻译为

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

与本文相关的文章

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址