Beenden Sie vim schneller


124

Ich benutze Vim hauptsächlich für schnelle Bearbeitungen anstatt für lange Arbeitssitzungen. In diesem Sinne finde ich die Tastenfolge besonders mühsam für das Rauchen: Esc, Shift+ ;, w, q, Enter.

Wie kann ich Vim mit den wenigsten Tastenanschlägen beenden (möglicherweise das Dokument speichern)? Vor allem aus dem Einfügemodus.


50
Der Ein- / Ausschalter ist nur einen Klick entfernt.
Renan

2
@jasonwryan ist richtig - ZZ ist ziemlich schnell, wenn Sie sich im Befehlsmodus befinden, aber der Vergleich ist nicht ganz richtig. Ihre Tastenfolge setzt voraus, dass Sie sich im Insert-Mod befinden. Um den Einfügemodus zu verlassen, ist Strg- [schneller als Esc. Shift-: ist ein Tastendruck - Sie können nicht tippen: schneller allein. Sie sparen also einiges, aber nicht viel.
Dominic Cronin

2
Sie sollten nicht verwenden Esc, um den Einfügemodus zu beenden, da die EscTaste bei modernen Tastaturen weit von den anderen Tasten entfernt ist. Benutze Ctrl+ ]oder erstelle dein eigenes Mapping.
ungültiger Zeiger

3
Holen Sie sich eine französische Tastatur - Sie können die Verschiebung beseitigen.
Rich

1
void-pointer, funktioniert Ctrl + C nicht anstelle von Ctrl + [als Ersatz für Esc?
Zumalifeguard

Antworten:


154

Shiftzz Im Befehlsmodus wird die Datei gespeichert und beendet.


4
Benötigt dies unbedingt Shift oder ist es einfach Z Z(Großbuchstaben)? Müssen Sie sich nicht im Befehlsmodus befinden, damit es funktioniert Esc Z Z?
ein Lebenslauf vom

35
Auch ESC Z Qohne Speichern zu
beenden

Strg + zz ist einfach falsch. Der vim-Prozess wird in den Hintergrund
verschoben

2
@ MichaelKjörling: Das ZZ muss nur groß geschrieben werden.
LarsH

2
Dies schließt jedoch nur eine Datei. Ich habe viele Tabs geöffnet, so dass es Tonnen von Zs dauern würde.
Philip

41

ZZIm normalen Modus wird die aktuelle Datei gespeichert, wenn sie geändert wurde, und das aktuelle Fenster / die aktuelle Registerkarte wird beendet oder geschlossen (genauso, :xaber nicht :wq, wenn die Datei geschrieben wird, auch wenn sie nicht geändert wurde).

Zum bedingungslosen Beenden nach dem Schreiben aller geänderten Dateien in allen Fenstern, Registerkarten und ausgeblendeten Puffern benötigen Sie :xa(es wird immer noch nicht beendet, wenn einige Dateien aus dem einen oder anderen Grund nicht geschrieben werden können).

Bedingungslos beenden, ohne etwas zu ändern: ZQ(wie :q!).


1
Ich denke du meinst normalen Modus. "Befehlsmodus" könnte leicht mit dem Befehlszeilenmodus
David Brown

@DavidBrown, command modeist der traditionelle Name, aber ich bin damit einverstanden, dass normal modeweniger mehrdeutig ist. Ich habe die Antwort geändert.
Stéphane Chazelas

33

:x ist ein Schlüssel weniger als :wq


11
Nicht so gut wie Shift + Z Zwenn!
CodeMedic

@CodeMedic Mit Abstand am schnellsten, wenn Sie nno : ;und nno ; :haben. (plus vno das gleiche). Ich war zweifelhaft über den Tausch, aber Sie werden nie zurückkehren. :nno ,: :silent! unmap :<CR>:silent! unmap ;<CR>und :nno ,; :nno ; :<CR>:nno : ;<CR>:vno ; :<CR>:vno : ;<CR>unterstützen die ungeraden yap@"und so.
10.

20

Erstellen Sie eine benutzerdefinierte Zuordnung für häufig verwendete Aufgaben. Wenn Sie vim häufig beenden, erstellen Sie ein Mapping mit wenigen Tastenanschlägen, z

nnoremap <leader><leader> :xa<cr>

Wenn das <leader>auf Komma gesetzt wird mit let mapleader = ","Schlag Komma zweimal ist ein schneller Weg vim zu verlassen und die Änderungen zu speichern. Wenn Sie im Einfügemodus einen weiteren Tastendruck speichern möchten, erstellen Sie auch ein entsprechendes Einfügemodus-Mapping:

inoremap <leader><leader> <esc>:xa<cr>

Aber Vorsicht, das könnte aus Versehen ziemlich vim werden, wenn Sie <leaderzweimal treffen .


1
Vielen Dank für eine gründliche Antwort, die mich ermutigt, mehr über vim zu erfahren (was ich eher vermeide)!
vemv

4
@vemv, du solltest umgekehrt arbeiten - immer wenn du dasselbe mehrmals machen musst, schau, ob es einen Weg gibt, das zu stoppen!
Wayne Werner

17

Verwenden Sie dies, um die Magie zu tun. Nur zwei Tastenanschläge!

Ctrl+ um szu sparen,

ctrl+ dSpeichern und beenden,

ctrl+ q, um das Verwerfen von Änderungen zu beenden.

1. Fügen Sie dies Ihrem ~ / .bashrc hinzu

bind -r '\C-s'
stty -ixon

2nd. Fügen Sie dies Ihrem ~ / .vimrc hinzu

inoremap <C-s> <esc>:w<cr>                 " save files
nnoremap <C-s> :w<cr>
inoremap <C-d> <esc>:wq!<cr>               " save and exit
nnoremap <C-d> :wq!<cr>
inoremap <C-q> <esc>:qa!<cr>               " quit discarding changes
nnoremap <C-q> :qa!<cr>

3rd. Starten Sie vim neu und sichern Sie sich produktivere Tage!


2
Warum sollten Sie STRG + D / STRG + Q verwenden, um + zu speichern und nicht nur ZZ und ZQ?
Evan Carroll

Hallo Evan, Strg + D / Strg + Q brauchen nur zwei Tastenanschläge, während ZZ und ZQ drei Tastenanschläge brauchen. shift + z + z / shift + q + q. Ein Speicherschlüssel ist wichtig, wenn wir dies häufig tun. Darüber hinaus haben wir mit Strg + s als Speicher-Verknüpfung erhöht, ich denke, es ist intuitiver als ZZ oder ZQ.
Brain90

4
Ich habe ZQ immer als gefährlich angesehen. Sie können beabsichtigen, ZQ zu drücken, um nicht zu speichern. Wenn Sie jedoch Z zweimal versehentlich drücken, haben Sie Ihre Datei ohne Bedeutung für gespeichert.
Keith Devens

1
Wenn Sie auf einem Mac arbeiten, verwenden Sie ~ / .bash_profile. Und denken Sie daran, es zu beschaffen.
Snowcrash

16

Wie wäre es nur Qmit 'Quit'?

Das erfordert nur einen verschobenen Tastendruck (dh Shiftund Q). Es ist auch eine Schlüsselkombination, die ich selten zufällig getroffen habe.

Standardmäßig ordnet vim Q zu switch to "Ex" mode. Wenn Sie den "Ex" -Modus so nutzlos (oder nervig) finden wie ich, dann werden Sie seine Standardfunktion überhaupt nicht vermissen.

Folgendes habe ich in meiner .vimrcAkte:

" allow quit via single keypress (Q)
map Q :qa<CR>

Wenn Sie nicht gespeicherte Puffer haben, werden Sie vor dem Beenden dazu aufgefordert.


irgendwie war in meinem VIM Q schon :qstandardmäßig zugeordnet. Danke für den Tipp.
user13107

7

Hier ist ein Spickzettel für VIM

Spickzettel für VIM

To quit the vi editor without saving any changes you've made:

If you are currently in insert or append mode, press Esc. 

Press  :  (colon). The cursor should reappear at the lower left corner of the screen beside a colon prompt. 

Enter the following:
  q!
This will quit the editor, and all changes you have made to the document will be lost.

Etwas mehr ::

Dateien schließen und speichern

When you edit a file in vi, you are actually editing a copy of the file rather than the original. The following sections describe methods you might use when closing a file, quitting vi, or both.
Quitting and Saving a File

The command ZZ (notice that it is in uppercase) will allow you to quit vi and save the edits made to a file. You will then return to a Unix prompt. Note that you can also use the following commands:

:w  to save your file but not quit vi (this is good to do periodically in
    case of machine crash!).
:q  to quit if you haven't made any edits.
:wq to quit and save edits (basically the same as ZZ).
Quitting without Saving Edits

Sometimes, when you create a mess (when you first start using vi this is easy to do!) you may wish to erase all edits made to the file and either start over or quit. To do this, you can choose from the following two commands:

:e! reads the original file back in so that you can start over.
:q! wipes out all edits and allows you to exit from vi.

Die letzten 2 sollten "seit dem letzten Speichern der Datei" hinzufügen ... es ist "offensichtlich", aber ein Anfänger könnte verstehen, dass "großartig, da ich vi geöffnet habe" und feststellen, dass "nein", wenn sie während der Sitzung gespeichert wurden: q! " Die ursprüngliche Datei wird überhaupt nicht wiederhergestellt, und ": e!" wird auch nicht wiederhergestellt. Es werden nur die Änderungen verworfen, die seit dem letzten Öffnen oder Speichern der Datei vorgenommen wurden (je nachdem, welcher Zeitpunkt der späteste ist).
Olivier Dulac

3

Meine einfache und bequeme Lösung zum Beenden und Speichern von vim - ist:

Ctrl+ XVerknüpfung.

Füge einfach diesen Code zur .vimrcDatei hinzu:

"Fast quit and save from normal and insert mode
:map <C-X> <ESC>:x<CR>
:imap <C-X> <ESC>:x<CR>

1
Schön, aber warum ist es <C-Q>nicht abbildbar?
friederbluemle

2

Versuchen

nno : ;
nno ; :
vno : ;
vno ; :

Wenn Sie fFtT verwenden, ist dies etwas gewöhnungsbedürftig, aber jetzt müssen Sie das Programm nur beenden ;x, um bei Bedarf zu speichern, ;qund nicht, um zu speichern. Außerdem wird alles andere auch schneller.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.