如何在vim中禁用内置命令

时间:2009-11-24 00:53:45

标签: vim command built-in remap

在vim中,当我点击:wq时,尝试输入:w时几乎总是发生意外。我想停用:wq

我找到的最近的是cmap,但它有一些奇怪的行为。如果我做了像

这样的事情
:cmap wq w

我甚至无法输入:wq;它只是在命令模式下将击键序列wq重新映射到w。例如,我不能在包含wq的字符串上输入搜索/替换命令。

我想将确切的命令:wq别名为:w或无操作。有没有办法做到这一点?

编辑:澄清为什么:cmap不适合我

3 个答案:

答案 0 :(得分:3)

更好的解决方案可以是:

:cabbrev wq w

但我不确定为什么cmap不起作用。 实际上我已经映射了一个我的功能键来保存文件:

:map <F2> :w<CR>
:nmap <F2> <ESC>:w<CR>i

更新 :在第一个命令中更正了拼写错误。

UPDATE2 :可能的解决方法:

:cabbrev wq<CR> w

HTH

答案 1 :(得分:0)

看起来最好的选择就是习惯:cmap行为。在极少数情况下,我想输入键盘序列wq我可以点击wq,等一下,然后再次点击q。我确实找到了this possible solution,但这对我的口味来说太复杂了。

答案 2 :(得分:0)

我添加了一个单行补丁程序,并运行dpkg-rebuildpackage将: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