在vim中,我该如何重新定义一个命令(例如::e)为其他内容?我希望将
:e *
重新定义为 :tabe *
。在我的.vimrc文件中进行修改即可。:e *
重新定义为 :tabe *
。在我的.vimrc文件中进行修改即可。cnoreabbrev
解决方法
到目前为止,我看到的最好的不使用插件的解决方法是:
cnoreabbrev <expr> e getcmdtype() == ":" && getcmdline() == 'e' ? 'tabe' : 'e'
如果您使用简单的:
cnoreabbrev e E
如果你想执行以下操作,那么按照@Yktula的建议会中断你的命令:
echo e f
这将变成:
echo E f
正如评论中@pydave所解释的那样,cmdalias插件可以将安全别名的简单接口添加为:
instead.
:Alias e tabe
在编写插件时,该插件还使用了getcmdtype() == ":"
技术来实现其功能。cabbrev e tabe
是完美的。:command -nargs=+ E :tabe "<args>"
:cabbrev e E
就是这样了。
echo e f
,这段代码会出错,因为它会变成 echo E f
。我的答案试图解决这个问题。 - Ciro Santilli OurBigBook.com :help :command
:Alias e tabe
,它会为你执行 getcmdline 魔法。 - idbrii