Vim
ist mein bevorzugter Texteditor beim Programmieren und daher stoße ich immer auf ein besonders nerviges Problem.
Wenn ich den Puffer schnell speichern und mit einer anderen Aufgabe fortfahren muss, mache ich häufig das Typische
:w
Ich schaffe es jedoch - was in mehr als 50% der Fälle zu sein scheint - immer, das zu kapitalisieren :w
. Natürlich schreit mich vim an, weil W
es ein ungültiger Befehl ist
E492: Not an editor command: W
Meine Frage ist, wie man in vim Doppelpunktbefehle aliasen kann . Insbesondere veranschaulichen, können Sie , wie man alias W
zu w
.
Ich bin mir des Prozesses bewusst, Schlüssel bestimmten Befehlen zuzuordnen . Leider suche ich das nicht.
:W
Sie einen Schlüssel zuordnen, um das Speichern durchzuführen. Wenn Sie an ein Programm gewöhnt sind, das mit Strg-s speichert, gibt es diese Zuordnungen von $ VIM / mswin.vim:" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
Antworten:
Versuchen Sie es mit, um die Fertigstellung unberührt zu lassen
wird
W
in der Befehlszeile durch ersetztw
, aber nur, wenn weder ein Wortzeichen folgt noch vorangestellt wird. Es:W<CR>
wird also durch ersetzt:w<CR>
, wird es aber:Write
nicht. (Beachten Sie, dass dies alle übereinstimmenden Befehle betrifft, einschließlich solcher, die Sie möglicherweise nicht erwarten. Beispielsweise wird der Befehl:saveas W Z
durch ersetzt:saveas w Z
. Seien Sie also vorsichtig.)Aktualisieren
So würde ich es jetzt schreiben :
Als eine Funktion:
Dadurch wird überprüft, ob der Befehlstyp
:
und der Befehl lautetW
, sodass er sicherer als nur istcnoreabbrev W w
.quelle
:%s/W/foo/g<CR>
:%s/w/foo/g<CR>
:cnoreabbrev <expr> W getcmdtype()==':'&&getcmdline()=~#'^W'?'w':'W'
Bei der zusätzlichen Suche habe ich festgestellt, dass jemand fast die gleiche Frage gestellt hat wie ich.
wird den Trick machen.
Bitte beachten Sie, dass der Benutzerbefehl , wie Richo betont , mit einem Großbuchstaben beginnen muss.
quelle
:command AliasName string of command to be aliased
command
Argumente, wie-nargs
,-complete
usw.:Q!
oder:W!
?:command W w
in die.vimrc
Datei einfügen.Ich finde, dass die Zuordnung des
;
Schlüssels:
zu eine bessere Lösung wäre und Sie produktiver für die Eingabe anderer Befehle machen würde.quelle
t
oder verwendenf
, können Sie normalerweise verwenden;
, um zum nächsten Ereignis zu gelangen. Man kann das sicher in die andere Richtung abbilden, selbst wenn Sie das Semikolon dem Doppelpunkt zugeordnet haben. Es wird keine Alias-Schleife geben.nnoremap : ;
Die beste Lösung besteht darin , eine benutzerdefinierte Funktion für die Behandlung von Abkürzungen zu schreiben , die nur am Anfang der Befehlsleiste stattfinden.
Fügen Sie dazu die folgende vimrc-Datei oder eine andere Stelle hinzu.
Ein paar nützliche Abkürzungen aus dem Quellmaterial, in dem ich dieses Zeug gefunden habe:
quelle
string()
, die das Gleiche tut wie IhreSingle_quote()
.Vielleicht möchten Sie eine Ihrer Funktionstasten (F1..F12) zuordnen: w? Dann füge dies in deine .vimrc ein:
(Strg-O im Einfügemodus wechselt vorübergehend in den normalen Modus).
quelle
Angenommen, Sie möchten in gvim einen Alias für den Befehl tabnew hinzufügen. Sie können einfach den folgenden Befehl in Ihre .vimrc-Datei eingeben (wenn nicht im Home-Ordner, dann erstellen Sie einen)
quelle
:saveas t example
durch:saveas tabnew example
Am sichersten und einfachsten ist ein Plugin wie cmdalias.vim oder mein aktuelles Update vim-alias davon, das berücksichtigt
:sil(ent)(!)
oder:redi(r)
,'<,'>
für die aktuelle visuelle Auswahl,quelle