在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. 乳胶:重新定义星号命令
- 2. 重新定义命令使用\ newenvironment
- 3. vim:无法重新绑定转义jj
- 4. 在新环境中重新定义的命令
- 5. Vim命令行转义超时
- 6. Vim:转义连接Ex命令的“bar”
- 7. VIM-substitute命令插入重复
- 8. 我可以(重新)在vim中映射Ex命令吗?
- 9. 重新映射Esc键在命令行模式Vim的
- 10. Vim脚本命令完成:按Tab重新加载列表
- 11. Vim命令日志
- 12. Vim命令模式
- 13. Vim In-File命令
- 14. ++在vim命令中
- 15. 将图像定义为新命令
- 16. 自定义命令更新CanExecute
- 17. 自定义命令
- 18. Vim:创建需要移动的自定义命令
- 19. 用vim中的自定义脚本替换:make命令
- 20. vim-latex:自动识别自定义命令
- 21. 命令重定向
- 22. 将'find'命令的输出重定向到'vim'
- 23. 如何在vim中定期重复任何命令?
- 24. vim的以特定方式重复命令
- 25. 在Parsec.Token中重新定义“stringLiteral”令牌
- 26. 从vim命令行运行vim脚本
- 27. 重新评估命令CanExecute
- 28. 重新映射Emacs命令
- 29. SPSS:重新编码命令
- 30. Vim:如何将选定的文本作为vim命令执行
如果您想键入:'echo e f',则会变成'echo E f',而不是。我的答案试图克服这一点。 – 2014-06-17 12:21:50