2013-01-16 30 views
16

如何將:E映射到:Explore?我已經安裝了一個擴展,導致E464: Ambiguous use of user-defined command,如果我現在做:E,但我的手指不會忘記命令!Map:E to:在命令模式下瀏覽?

我試過map :E :Explore,但這很難看,因爲它使訪問其他命令變得困難。

我嘗試這些:

cmap :E<CR> :Explore<CR> 
cmap :E^M :Explore^M 

(其中^M =控制V +輸入),但這些不工作,除非我打進入真正的真快。

回答

32

:E通常就足夠了,因爲:Explore是以E開頭的唯一定義的命令。您顯然已定義了多個此類命令,因此:E不明確並導致錯誤。

:cmap導致立即字面替換,從而產生不必要的副作用。稍微更好的選擇是:cabbrev,其可以被用來定義縮寫命令模式:

cabbrev E Explore 

這觸發以下Ë輸入Ë空間。前者是需要的,因爲打字E輸入將調用:Explore,但後者在命令模式下又有副作用。

爲了:E被適當地別名爲:Explore,它必須被定義爲一個單獨的命令:

command! E Explore 

然而,:command E,其中列出了與E啓動所有定義的命令,揭示了:E:Explore有不同的屬性。例如,不可能執行:E ~,因爲:E不接受任何參數。另外,與:Explore不同,:E不會自動完成目錄。

爲了彌補這些缺陷,:E必須以與:Explore完全相同的方式定義。執行:verbose command Explore顯示定義:Explore的腳本的位置; :E然後可以以相同的方式來定義,通過添加<args>

command! -nargs=* -bar -bang -count=0 -complete=dir E Explore <args> 

雖然可以推斷最從由:command Explore提供的信息,這些屬性,可以有仍然不符,如在此-bar案件。

N.B.如果定義了:Explore:Example,則:Exp:Exa是可以使用的最短的明確命令。如上所述,將:E明確別名爲其中的一個,將覆蓋Vim的默認行爲並允許消歧。但是,:Ex仍然不明確。

+10

打開資源管理器的另一種快捷方式是使用':e.'。這將':探索'當前目錄。這也具有不需要換檔鑰匙的好處。 –

+0

@PeterRincker整潔,但對於完全不同的用例。 – Shriken

+0

對於完整的n00b,把'命令!在你的'〜/ .vimrc'文件中找到E Explore',然後:E將正確地別名到:Explore。 – N0thing