在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