Kann ich Ex-Befehle in vim (neu) zuordnen?

70

Ich liebe Vim und die Geschwindigkeit, die es mir gibt. Aber manchmal sind meine Finger zu schnell und ich tippe :WQstatt :wq. (Auf einer deutschen Tastatur, müssen Sie drücken Shiftden Darm zu bekommen :.) Vim wird dann beklagen , dass WQist Not an editor command.

Gibt es eine Möglichkeit, Befehle zu erstellen Wund zu Qbearbeiten?

innaM
quelle
5
Sie verwenden Shift, um auch einen Doppelpunkt für eine amerikanische Standard-QWERTZ zu erhalten.
William Keller
1
Sollte das nicht auf Superuser sein?
Boldewyn
2
Sie können auch zuordnen; (oder was auch immer auf der: -Taste steht) bis: und umgekehrt, sodass Sie keine Umschalttaste verwenden müssen, um die :.
mb14
2
;; springt standardmäßig zur nächsten Instanz eines Zeichens, das Sie mit f gefunden haben (ähnlich wie n die nächste Instanz von a / search findet). Wenn Sie sich für eine Neuzuordnung entscheiden, verlieren Sie diese Funktionalität.
Anthony DiSanti
@AnthonyDiSanti nicht, wenn Sie ;zurück zu :! noremap ; : noremap : ;: P
mraaroncruz

Antworten:

79

Versuchen

 :command WQ wq
 :command Wq wq
 :command W w
 :command Q q

Auf diese Weise können Sie Ihre eigenen Befehle definieren. Siehe :help commandfür weitere Informationen.

WMR
quelle
6
Vergessen Sie nicht, das oben Genannte zu Ihrem vimrc hinzuzufügen, damit Sie es nicht jedes Mal tun müssen.
Rampion
12
Beachten Sie, dass Sie in .vimrc den führenden Doppelpunkt weglassen müssen. Es sollte zum Beispiel lauten:command Wq wq
Luc
1
Diese Lösung ist auf Befehlsnamen beschränkt, die mit Großbuchstaben beginnen. Eine viel bessere Lösung finden Sie hier .
Jthorpe
Auf diese Weise können Sie keine Argumente verwenden. Dies funktioniert beispielsweise nicht, :W example.txtwenn Sie den Alias ​​mit:command W w
Flimm
1
Mit vim 8.0.1453, meiner .vimrc, musste ich cmap WQ wqnicht „command“. Vim gab mir etwas E128: Invalid command nameanderes.
Kingsley
38

Alternative Möglichkeit:

Verwenden Sie ' Befehlsabkürzungen '

:ca WQ wq
Kent Fredric
quelle
2
Ein hilfreicher Weg, sich daran zu erinnern: Das vollständige Schlüsselwort lautet cabbrev. :)
Ben Klein
2
+1 Dies ermöglicht auch Aliase, die mit einem Kleinbuchstaben beginnen (im Gegensatz zu :command).
Matthias Braun
3
Diese Lösung ersetzt, WQwo immer sie sich im Befehl befindet, nicht nur am Anfang, was für 'WQ', aber auch für häufigere typisierte Zeichenfolgen selten sein kann. Daher ist diese Lösung besser.
Jthorpe
14

Und du kannst verwenden

:cmap WQ wq

auch. ZB habe ich

cmap h tab help

in my .vimrcbedeutet dies, Hilfeseiten in einem neuen Tab zu öffnen.

Danke für den Tipp Jim Stewart :

Aber hier ist eine viel bessere Lösung als die oben genannte (für die Hilfezuordnung, so dass sie nur gilt, wenn Sie Folgendes tun: h):

cnoreabbrev <expr> h getcmdtype() == ":" && getcmdline() == "h" ? "tab h" : "h"
Zsolt Botykai
quelle
1
Auf welcher Version wenn (G) Vim? Was passiert, wenn Sie '<ESC>: cmap h tab help <CR>: h <SPACE>' eingeben?
Zsolt Botykai
6
-1: berührt viel zu viel. Zum Beispiel :echo 3wird dann produzieren :ectab helpo 3. :e sh.pywird :e stab help.py. Und so weiter.
Chris Morgan
3
Dies ist nicht zum Thema gehörend, aber Sie möchten wahrscheinlich etwas wie cnoreabbrev <expr> h getcmdtype() == ":" && getcmdline() == "h" ? "tab h" : "h"für die Hilfezuordnung, damit es nur dann gilt, wenn Sie dies tun :h<space>.
Jim Stewart
1
Danke @JimStewart, es ist eine viel bessere Lösung, ich werde sie meiner Antwort hinzufügen!
Zsolt Botykai
: cmap h tab help macht die vim-Ausgabe-Registerkarte auf dem gesamten Bildschirm in einer Forever-Schleife.
Trusktr