gpt4 book ai didi

关于默认命令超时的 Vim 行为

转载 作者:行者123 更新时间:2023-12-04 19:47:40 28 4
gpt4 key购买 nike

我正在尝试取消映射 <C-w>o这是执行 :only 的默认命令( :help :only ),所以我尝试的第一件事是:

nmap <c-w>o <nop>

这种作品,除非我按 <c-w> ,等待超过 timeoutlen ms 然后按 o , :only被调用。

我不明白为什么 <c-w> -prefixed 和其他默认命令在 timeoutlen 后不会超时女士,这是恕我直言出乎意料的。

以前我有一个定义自己映射的 ZoomWin 插件: <c-w>o有效地覆盖了 :only命令,我不明白为什么有时 :only command被调用而不是 ZoomWin 插件,我意识到它在插件映射超时时被调用(在 timeoutlen 毫秒之后),然后我按下了 o , 调用默认 <c-w>o命令代替。

那么,是否可以像自定义映射一样使默认命令超时?

最佳答案

你不应该考虑 <C-w>o作为一个命令,你应该考虑 <C-w>像“启动窗口操作子模式”:像任何其他多键 vim 正常模式命令 <C-w>{smth} (还有 g*z*Z* )不仅不受超时影响, <C-w>% ( <C-w>{any-key-not-mentioned-in-help} ) 不会做任何事情(可能会发出哔哔声,但在我的系统上我看不到(使用“visualbell”)或听到哔哔声),不会切换到相应的括号(这是 % 的默认设置)。

您仍然可以禁用 <C-w>o通过重新映射 <C-w>以下列方式:

function s:CtrlW()
let char=getchar()
if type(char)==type(0) | let char=nr2char(char) | endif

if char is# 'o'
return ''
endif
return "\<C-w>".char
endfunction
nnoremap <expr> <C-w> <SID>CtrlW()

关于关于默认命令超时的 Vim 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089482/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com