在vim中,在我的.vimrc中,如何将命令(即:e)重新定义为其他内容?
我想将:e *
重新定义为:tabe *
。
答案 0 :(得分:10)
我想出了办法。见How to disable a built-in command in vim。从那里,我们可以看到我们可以使用cabbrev来改变命令的作用。根据我的需要,cabbrev e tabe
是完美的。
但是我们可以推广这个解决方案,使得用户可以访问用户定义的小写字符命令:use cabbrev(re)将内置命令定义为用户定义的命令。因此,我们可以重新定义内置命令以及用户定义的命令。
这是一个例子,相当于我上面提到的解决问题的方法:
:command -nargs=+ E :tabe "<args>"
:cabbrev e E
就是这样。
答案 1 :(得分:6)
cnoreabbrev
解决方法
到目前为止,没有插件的最佳解决方法是:
cnoreabbrev <expr> e getcmdtype() == ":" && getcmdline() == 'e' ? 'tabe' : 'e'
如果你使用简单的:
cnoreabbrev e E
如果你想这样做,@ yktula所建议的会破坏你的命令:
echo e f
将成为:
echo E f
代替。
正如@pydave在评论中所解释的那样,cmdalias plugin添加了一个更简单的界面来执行安全别名:
:Alias e tabe
在编写本文时,插件还使用getcmdtype() == ":"
技术来实现其功能。
答案 2 :(得分:1)
据我所知,你做不到。用户定义的命令必须具有大写的第一个字母。
:help :command
了解更多信息