我可以在Vim中(重新)映射Ex命令吗?


70

我爱vim及其带来的速度。但是有时候,我的手指太快了,我发现自己打字:WQ而不是:wq。(在德语键盘上,您必须按Shift以获得冒号:。)然后Vim会抱怨WQNot an editor command

有一些制作WQ编辑命令的方法吗?


5
您也可以使用shift在标准American QWERTY上获得冒号。
William Keller

1
那不应该在超级用户身上吗?
Boldewyn

2
您也可以地图; (或:键上的任何内容)到:,反之亦然,因此您无需使用shift即可获取:。
mb14 2011年

2
; 默认情况下,跳转到使用f找到的字符的下一个实例(类似于n查找/搜索的下一个实例的方式)。如果您决定重新映射它,则会失去该功能。
安东尼·迪桑蒂

如果您重新映射;回@AnthonyDiSanti,则不会:noremap ; : noremap : ;:P
mraaroncruz 2014年

Answers:


79

尝试

 :command WQ wq
 :command Wq wq
 :command W w
 :command Q q

这样,您可以定义自己的命令。请参阅:help command以获取更多信息。


6
不要忘记将以上内容添加到您的vimrc中,这样您就不必每次都这样做。
猖ion

12
请注意,在.vimrc中,您需要省略前导冒号。例如,其内容应为:command Wq wq
吕克(Luc)

1
此解决方案仅限于以大写字母开头的命令名称。在这里可以找到更好的解决方案。
Jthorpe

这不允许您使用参数,例如,:W example.txt如果您使用:command W w
Flimm

1
8.0.1453在我中.vimrc,使用vim ,我必须使用cmap WQ wq,而不是“ command”。Vim不给我E128: Invalid command name
金斯利


14

你可以使用

: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选项卡帮助<CR>:h <空格>”时会发生什么?
Zsolt Botykai 2010年

6
-1:触摸太多。例如,:echo 3将产生:ectab helpo 3:e sh.py成为:e stab help.py。等等。
克里斯·摩根

3
这是题外话,但您可能需要类似cnoreabbrev <expr> h getcmdtype() == ":" && getcmdline() == "h" ? "tab h" : "h"帮助映射的内容,因此仅在您这样做时才适用:h<space>
吉姆·斯图尔特

1
谢谢@JimStewart,这是一个更好的解决方案,我将其添加到我的答案中!
Zsolt Botykai,2012年

:cmap h选项卡帮助使vim输出选项卡永久循环显示在屏幕上。
trusktr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.