0

在 Vim 中有一些没有超时的内置复合命令,例如:g永远等待下一次击键。我想创建我的自定义复合绑定以使其行为类似。但是,最好不要影响其他绑定(我暗示在set notimeout这里使用设置的可能性)。如果对于特定绑定无法实现,那么我想我必须回到set notimeout设置。那么有什么建议吗?

4

2 回答 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 回答