在 Vim 中有一些没有超时的内置复合命令,例如:g
永远等待下一次击键。我想创建我的自定义复合绑定以使其行为类似。但是,最好不要影响其他绑定(我暗示在set notimeout
这里使用设置的可能性)。如果对于特定绑定无法实现,那么我想我必须回到set notimeout
设置。那么有什么建议吗?
问问题
246 次
2 回答
4
如果您showcmd
在等待下一个字符时不工作并且光标位于右下角并没有问题,请使用getchar()
:
nnoremap <Plug>PluginAction-a do-something-here-for-key-a
function s:Getchar()
let char=getchar()
if type(char)==type(0)
return nr2char(char)
endif
return char
endfunction
nmap <expr> \g "<Plug>PluginAction-".<SID>Getchar()
.
于 2012-11-25T13:06:54.873 回答
2
只要与内置命令没有重叠,您就可以只创建到复合映射的第一个键的映射,并使用复合映射的所有后续键getchar()
(无限期等待键),然后调度到基于输入键的完整序列的相应处理程序。
这当然不如直接映射那么舒服,但应该可以解决问题。虽然我真的会认真思考一个好的价值是否'timeoutlen'
还没有解决你的问题;至少我从来没有认为这是一个问题。
于 2012-11-25T13:11:19.593 回答