在vim中,在我的.vimrc中,如何重新定义一个命令(即:e)作为别的东西? 我想重新定义:e *
为:tabe *
。Vim:重新定义命令
9
A
回答
10
我想出了一个办法做到这一点。见How to disable a built-in command in vim。由此我们可以看到,我们可以使用cabbrev来改变命令的功能。根据我的需要,cabbrev e tabe
是完美的。
但是,我们可以概括这个解决方案,使命令以小写字母开头,用户可以访问用户定义的命令:使用cabbrev(重新)将内置命令定义为用户定义的命令。因此,我们能够重新定义内置命令以及用户定义的命令。
下面是一个例子,这相当于我的上述解决我的问题:
:command -nargs=+ E :tabe "<args>"
:cabbrev e E
这就是全部。
1
据我所知,你不能。用户定义的命令必须具有大写的第一个字母。
:help :command
了解更多信息
3
,我迄今所看到的没有一个插件,最好的解决方法是:
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() == ":"
技术实现其功能。
+0
您可以使用[cmdalias](http://www.vim.org/scripts/script.php?script_id=746)将其简化为':别名和tabe',它会为您执行getcmdline魔术。 – idbrii 2013-12-13 19:09:32
相关问题
- 1. 重新定义命令使用\ newenvironment
- 2. 乳胶:重新定义星号命令
- 3. vim:将控制命令重新映射到空间命令
- 4. 在vim自定义命令中调用“set”命令
- 5. 在vim中定义自定义命令时出现E488错误
- 6. vim:无法重新绑定转义jj
- 7. 在新环境中重新定义的命令
- 8. Telerik MVC网格自定义命令不重新绑定JSON
- 9. Vim:转义连接Ex命令的“bar”
- 10. Vim命令行转义超时
- 11. VIM-substitute命令插入重复
- 12. Vim重复点(“。”)命令缓冲区?
- 13. 我可以(重新)在vim中映射Ex命令吗?
- 14. 重新映射Esc键在命令行模式Vim的
- 15. Vim脚本命令完成:按Tab重新加载列表
- 16. Vim命令模式
- 17. Vim命令日志
- 18. ++在vim命令中
- 19. Vim In-File命令
- 20. 自定义命令更新CanExecute
- 21. 将图像定义为新命令
- 22. Vim:如何用一个使用旧命令的新命令覆盖命令?
- 23. 在新的命令定义中调用vim substitute()和展开()调用
- 24. 从命令行运行vim命令
- 25. 自定义命令
- 26. Vim插件 - 命令模式下params自定义自动完成
- 27. vim-latex:自动识别自定义命令
- 28. 用vim中的自定义脚本替换:make命令
- 29. Vim:创建需要移动的自定义命令
- 30. 命令重定向
如果您想键入:'echo e f',则会变成'echo E f',而不是。我的答案试图克服这一点。 – 2014-06-17 12:21:50