2013-01-16 10 views
16

Wie kann ich :E zu :Explore zuordnen? Ich habe eine Erweiterung installiert, die zu E464: Ambiguous use of user-defined command führt, wenn ich jetzt :E mache, aber meine Finger werden den Befehl nicht vergessen!Karte: E zu: Erkunden im Befehlsmodus?

Ich versuchte map :E :Explore, aber das ist hässlich, da es den Zugriff auf die anderen Befehle schwierig macht.

Ich habe versucht, diese:

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

(wo ^M = control-v + Enter), aber diese nicht funktionieren, wenn ich wirklich schnell wirklich drücken Sie die Eingabetaste.

Antwort

32

:E würde normalerweise ausreichen, als wäre :Explore der einzige definierte Befehl, der mit einem E begann. Sie haben offensichtlich mehrere solche Befehle definiert, so dass :E mehrdeutig ist und zu einem Fehler führt.

:cmap verursacht sofortige literale Substitution und hat somit unerwünschte Nebenwirkungen. Eine etwas bessere Alternative ist :cabbrev, die verwendet werden können Abkürzungen für Befehlsmodus zu definieren:

cabbrev E Explore 

Dies löst folgende EGeben Sie oder ERaum. Ersteres wird, weil die Eingabe gewünscht:E Geben Sie :Explore aufrufen, aber diese hat wieder Nebenwirkungen im Befehlsmodus.

Damit :E richtig zu :Explore aliased werden, muss es als separates Kommando definiert werden:

command! E Explore 

jedoch :command E, die alle definierten Befehle auflistet, die mit E beginnen, zeigt, dass :E und :Explore haben unterschiedliche Eigenschaften. Zum Beispiel ist es unmöglich, :E ~ auszuführen, weil :E keine Argumente akzeptiert. Im Gegensatz zu :Explore, :E werden Verzeichnisse nicht automatisch vervollständigt.

Um diese Mängel zu beheben, muss :E genau wie :Explore definiert werden. Die Ausführung von :verbose command Explore zeigt den Speicherort des Skripts, in dem :Explore definiert ist; :E kann dann auf die gleiche Weise definiert werden, mit dem Zusatz von <args>:

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

Während es möglich ist, die meisten dieser Attribute aus den Informationen von :command Explore gibt in dieser Diskrepanzen vorgesehen abzuleiten, wie -bar sein kann immer noch Fall.

N.B. Wenn :Explore und :Example definiert sind, sind :Exp und :Exa die kürzesten eindeutigen Befehle, die verwendet werden können. Das explizite Aliasing von :E auf einen von ihnen, wie oben, überschreibt das Standardverhalten von Vim und ermöglicht die Disambiguierung.Jedoch wäre :Ex immer noch mehrdeutig.

+10

Eine weitere schnelle Möglichkeit, den Explorer zu öffnen, ist ': e.'. Dies wird ': Explore' das aktuelle Verzeichnis. Dies hat auch den Vorteil, dass Sie die Umschalttaste nicht benötigen. –

+0

@PeterRincker Ordentlich, aber für einen völlig anderen Anwendungsfall. – Shriken

+0

Für das komplette n00b, put 'command! E Explore' in Ihrer '~/.vimrc' Datei, dann: E wird richtig alias zu: Explore. – N0thing

Verwandte Themen