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

inn*_*naM 69 vim

我喜欢vim和它给我的速度.但有时,我的手指太快了,我发现自己打字:WQ而不是:wq.(在德国的键盘,你必须按下Shift得到冒号:.)然后Vim会抱怨说,WQNot an editor command.

有没有办法制作WQ编辑命令?

WMR*_*WMR 76

尝试

 :command WQ wq
 :command Wq wq
 :command W w
 :command Q q
Run Code Online (Sandbox Code Playgroud)

这样您就可以定义自己的命令.有关:help command更多信息,请参阅

  • 请注意,在.vimrc中,您需要省略前导冒号.它应该读取,例如:`命令Wq wq` (10认同)
  • 不要忘记将上面的内容添加到您的vimrc中,这样您就不必每次都这样做. (4认同)

Ken*_*ric 33

替代方法:

使用' 命令缩写 '

:ca WQ wq
Run Code Online (Sandbox Code Playgroud)

  • "Command*abbreviations*",而不是"命令别名". (5认同)
  • 一个有用的方法来记住:完整的关键字是`cabbrev`.:) (2认同)
  • +1这也允许以小写字母开头的别名(与`:command`相反). (2认同)
  • 这个解决方案将替换命令中的"WQ",而不仅仅是在开头,这对于"WQ"来说可能很少见,但对于更常见的类型字符串也是如此.因此,[此解决方案](http://stackoverflow.com/a/3879737/1519199)更好. (2认同)

Zso*_*kai 14

你可以使用

:cmap WQ wq
Run Code Online (Sandbox Code Playgroud)

同样.我有

cmap h tab help
Run Code Online (Sandbox Code Playgroud)

在我的.vimrc意思是在新选项卡中打开帮助页面.

感谢Jim Stewart提示:

但是这里有一个比上面更好的解决方案(对于帮助映射,所以它只适用于你:h):

cnoreabbrev <expr> h getcmdtype() == ":" && getcmdline() == "h" ? "tab h" : "h"
Run Code Online (Sandbox Code Playgroud)

  • -1:触及太多.例如,`:echo 3`将生成`:ectab helpo 3`.`:e sh.py`变为`:e stab help.py`.等等. (6认同)
  • 这是偏离主题的,但你可能想要像`cnoreabbrev <expr> h getcmdtype()==":"&& getcmdline()=="h"?"tab h":"h"`用于帮助映射,因此它仅适用于`:h <space>`. (3认同)