如何禁用vim中的内置命令
在vim中,当我点击如何禁用vim中的内置命令,vim,command,built-in,remap,Vim,Command,Built In,Remap,在vim中,当我点击:wq时,几乎总是在尝试输入:w时发生意外。我想禁用:wq 我发现最接近的是cmap,但它有一些奇怪的行为。如果我做了类似的事情 :cmap wq w 我甚至不能输入:wq;它只是在命令模式下将击键序列wq重新映射到w。例如,现在我无法在包含wq的字符串上输入搜索/替换命令 我只想将确切的命令:wq别名为:w或no-op。有没有办法做到这一点 编辑:澄清为什么:cmap不是我的选择更好的解决方案可以是: :cabbrev wq w 但我不确定为什么cmap不能作为例外工作
:wq
时,几乎总是在尝试输入:w
时发生意外。我想禁用:wq
我发现最接近的是cmap
,但它有一些奇怪的行为。如果我做了类似的事情
:cmap wq w
我甚至不能输入:wq
;它只是在命令模式下将击键序列wq
重新映射到w
。例如,现在我无法在包含wq
的字符串上输入搜索/替换命令
我只想将确切的命令:wq
别名为:w
或no-op。有没有办法做到这一点
编辑:澄清为什么
:cmap
不是我的选择更好的解决方案可以是:
:cabbrev wq w
但我不确定为什么cmap
不能作为例外工作。
实际上,我已经映射了一个功能键来保存文件:
:map <F2> :w<CR>
:nmap <F2> <ESC>:w<CR>i
:地图:w
:nmap:wi
更新:在第一个命令中更正了输入错误
更新2:可能的解决方法:
:cabbrev wq<CR> w
:cabbrev wq w
HTH看起来最好的选择就是习惯于
:cmap
行为。在极少数情况下,我想输入键盘序列wq
,我只需点击wq
,等待一秒钟,然后再次点击q
。我确实找到了,但对我的口味来说太复杂了。我添加了一个单行补丁并运行了dpkg重建包,以便将:wa
重命名为:wwa
:
--- neovim/src/nvim/ex_cmds.lua
+++ neovim/src/nvim/ex_cmds.lua
@@ -3057,7 +3057,7 @@
func='ex_wnext',
},
{
- command='wall',
+ command='wwall',
flags=bit.bor(BANG, TRLBAR, CMDWIN),
addr_type=ADDR_LINES,
func='do_wqall',
您需要在
debian/patches/
中创建此修补程序,并将其添加到debian/patches/series
能否请您解释一下:cabbrew?我想应该是:cabbrev
<代码>:cabbrev wq w将在按空格键或enter键后将wq更改为w,因此它将使:wq
执行:w
。有关更多信息,请参见:help:cabbrev
和:help:ab
。对不起,我想我的问题不够清楚。如果您使用:cmap,并且看起来也是:cabbrew,则表示命令模式下的“wq”击键序列映射到了“wq”以外的内容。因此,例如,您不能对包含“wq”的字符串执行搜索/替换。我想做的就是,如果我输入准确的命令:wq,它被别名为“w”或no-op。谢谢AI,拼写更正。我正在深入研究这个问题。因为这不是正确的解决方案。只是顺便说声谢谢-我正试图摆脱标签,所以做cabbrev-tabnew-help代码>使vim在每次尝试创建选项卡时都给出错误消息。