我可以(重新)映射vim中的Ex命令吗?

75

我喜欢vim的速度,但有时我的手指过快,会不小心输入:WQ而不是:wq。(在德语键盘上,您需要按Shift才能获得冒号:。)然后vim会抱怨WQ不是编辑命令。

是否有方法将WQ设置为编辑命令?


5
在标准的美国 QWERTY 键盘上,你需要使用 shift 键来打出冒号。 - William Keller
1
那不应该在超级用户上吗? - Boldewyn
3
你还可以将分号键(或冒号键上的任何其他字符)映射为冒号,反之亦然,这样你就不需要使用 Shift 键来输入冒号了。 - mb14
2
默认情况下,使用f查找字符的下一个实例(类似于n查找/搜索的下一个实例);如果您决定重新映射它,则会失去该功能。 - Anthony DiSanti
1
@AnthonyDiSanti 如果您将“;”重新映射回“:”,那就不会出现这种情况了!noremap ; : noremap : ; :P - mraaroncruz
在 Vi Stackexchange 上有一个类似的问题:https://vi.stackexchange.com/q/2665/7244 - Flimm
3个回答

86
请提供需要翻译的完整内容,以便我能够为您提供准确的翻译。
 :command WQ wq
 :command Wq wq
 :command W w
 :command Q q

通过这种方式,您可以定义自己的命令。有关更多信息,请参见:help command


6
不要忘记将以上内容添加到你的 vimrc 中,这样你就不必每次都执行它。 - rampion
13
请注意,在 .vimrc 文件中,需要省略冒号的前导符号。例如,应该写成:command Wq wq - Luc
1
这个解决方案仅适用于以大写字母开头的命令名称。更好的解决方案可以在这里找到。 - Jthorpe
这样做不允许您使用参数,例如,如果您使用“:command W w”设置别名,则“:W example.txt”将无法正常工作。 - Flimm
1
在我的.vimrc中,使用vim 8.0.1453,我必须使用cmap WQ wq而不是“command”。否则,Vim会给我E128:无效的命令名称 - Kingsley

39

2
一个有用的记忆方式是:完整的关键字是 cabbrev。 :) - Ben Klein
2
+1 这也允许以小写字母开头的别名(与 :command 相反)。 - Matthias Braun
3
此解决方案将替换命令中任何位置的“WQ”,而不仅仅是在开头,这对于“WQ”可能很少发生,但对于更常见的键入字符串则不然。因此,此解决方案 更好。 - Jthorpe

17
:cmap WQ wq

同样适用。 例如,我有

cmap h tab help

在我的.vimrc中,意味着在新标签页中打开帮助页面。

感谢Jim Stewart的提示:

但是这里有一个比上面更好的解决方案(针对帮助映射,使其仅在执行:h命令时生效):

cnoreabbrev <expr> h getcmdtype() == ":" && getcmdline() == "h" ? "tab h" : "h"

1
(G)Vim的哪个版本支持此功能?当您键入'<ESC>:cmap h tab help<CR>:h<SPACE>'时会发生什么? - Zsolt Botykai
6
-1: touches far too much. For example, :echo 3 will then produce :ectab helpo 3. :e sh.py becomes :e stab help.py. Et cetera.这段话意思是某个程序或代码存在问题,会影响到过多的操作。比如输入命令 :echo 3 会出现 :ectab helpo 3 的结果,输入 :e sh.py 会变成 :e stab help.py 等等。 - Chris Morgan
4
这段话与主题无关,但你可能需要像这样设置帮助键映射:cnoreabbrev <expr> h getcmdtype() == ":" && getcmdline() == "h" ? "tab h" : "h",这样只有在输入 :h<空格> 时才会生效。 - Jim Stewart
1
谢谢@JimStewart,这是一个更好的解决方案,我会把它添加到我的答案中! - Zsolt Botykai
:cmap h tab help 会让 Vim 在屏幕上无限循环输出制表符。 - trusktr
帮助我使用:cnoreabbrev ص w覆盖:w命令,使其在波斯语中可用;)谢谢 - Mostafa Shahverdy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接