2013-01-16 11 views
16

Come posso mappare :E a :Explore? Ho installato un'estensione che porta a E464: Ambiguous use of user-defined command se lo faccio ora :E, ma le mie dita non dimenticheranno il comando!Mappa: E per: esplorare in modalità comando?

Ho provato map :E :Explore, ma è brutto in quanto rende difficile l'accesso agli altri comandi.

ho provato questi:

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

(dove ^M = control-v + Enter), ma questi non funzionano a meno che non mi ha colpito entrare veramente veramente veloce.

risposta

32

:E sarebbe normalmente sufficiente come è se :Explore fosse l'unico comando definito che è iniziato con un E. È evidente che sono stati definiti più comandi di questo tipo, pertanto :E è ambiguo e genera un errore.

:cmap causa immediata sostituzione letterale e quindi ha effetti collaterali indesiderati. Un po 'meglio alternativa è :cabbrev, che può essere utilizzato per definire le abbreviazioni per la modalità di comando:

cabbrev E Explore 

Questo innesca seguente EEnter o ESpazio. Il primo è desiderato perché digitando :EIndicate invocherà :Explore, ma quest'ultimo ha nuovamente effetti collaterali in modalità di comando.

Affinché :E di essere correttamente aliasing per :Explore, esso deve essere definito come un comando separato:

command! E Explore 

Tuttavia, :command E, che elenca tutti i comandi definiti che iniziano con E, rivela che :E e :Explore avere proprietà diverse Ad esempio, è impossibile eseguire :E ~ perché :E non accetta alcun argomento. Inoltre, a differenza di :Explore, :E non compila automaticamente le directory.

Per risolvere questi problemi, è necessario definire :E esattamente nello stesso modo di :Explore. L'esecuzione di :verbose command Explore mostra la posizione dello script in cui è definito :Explore; :E può quindi essere definito nello stesso modo, con l'aggiunta di <args>:

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

Mentre è possibile dedurre la maggior parte di questi attributi dalle informazioni fornite da :command Explore, ci può essere ancora discrepanze, come -bar in questo Astuccio.

N.B. Se :Explore e :Example sono definiti, :Exp e :Exa sono i comandi più chiari e non ambigui che possono essere utilizzati. Esplicitamente l'aliasing di :E su uno di essi, come sopra, sovrascrive il comportamento predefinito di Vim e consente la disambiguazione.Tuttavia, :Ex sarebbe ancora ambiguo.

+10

Un altro modo rapido per aprire l'esploratore è usare ': e'. Ciò '' Esplora 'la directory corrente. Questo ha anche il vantaggio di non aver bisogno del tasto Maiusc. –

+0

@PeterRincker Neat, ma per un caso d'uso completamente diverso. – Shriken

+0

Per il n00b completo, metti il ​​comando '! E Esplora' nel tuo file '~/.vimrc', quindi: E sarà correttamente alias in: Esplora. – N0thing

Problemi correlati