我试图取消映射这是执行( )<C-w>o的默认命令,所以我尝试的第一件事是::only:help :only
nmap <c-w>o <nop>
Run Code Online (Sandbox Code Playgroud)
这种工作是有效的,除非我按<c-w>,等待超过timeoutlen毫秒,然后按o,:only被呼叫。
我不明白为什么<c-w>-prefixed 和其他默认命令在毫秒后不会超时timeoutlen,恕我直言,这是意外的。
以前我有 ZoomWin 插件定义了自己的映射:<c-w>o有效地覆盖:only命令,我无法理解为什么有时:only command会调用 ZoomWin 插件而不是 ZoomWin 插件,我意识到当插件映射超时(timeoutlen毫秒后)时它会被调用并且然后我按下o,调用默认<c-w>o命令。
那么,是否可以像自定义映射一样使默认命令超时?
你不应该考虑<C-w>o成为一个命令,你应该考虑<C-w>像 \xe2\x80\x9cstart 窗口操作子模式\xe2\x80\x9d:像任何其他多键 vim 正常模式命令<C-w>{smth}(也g*,,,z*)Z*不只是免疫超时,<C-w>%( <C-w>{any-key-not-mentioned-in-help}) 不会执行任何操作(可能会发出蜂鸣声,但在我的系统上,我可以 \xe2\x80\x99t 看到(使用 \'visualbell\')或听到蜂鸣声),不会切换到相应的括号(这是默认的%)。
您仍然可以通过以下方式<C-w>o重新映射来禁用它:<C-w>
function s:CtrlW()\n let char=getchar()\n if type(char)==type(0) | let char=nr2char(char) | endif\n\n if char is# \'o\'\n return \'\'\n endif\n return "\\<C-w>".char\nendfunction\nnnoremap <expr> <C-w> <SID>CtrlW()\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |