Esci da vim più rapidamente


124

Uso Vim principalmente per modifiche rapide piuttosto che per lunghe sessioni di lavoro. In questo senso, trovo la sequenza di tastiera per smettere particolarmente laboriosa: Esc, Shift+ ;, w, q, Enter.

Come uscire da Vim (possibilmente salvando il documento) con il minor numero di tasti? Soprattutto dalla modalità Inserisci.


50
Il pulsante di accensione è a portata di clic, lo sai.
Renan,

2
@jasonwryan ha ragione: ZZ è abbastanza veloce se si è in modalità comando, ma il confronto non è del tutto corretto. La sequenza di tasti presuppone che tu sia nel mod di inserimento. Per uscire dalla modalità di inserimento Ctrl- [è più veloce di Esc. Maiusc: è una sequenza di tasti: non è possibile digitare: più veloce da solo. Quindi ne risparmi un po ', ma non molto.
Dominic Cronin,

2
Non si dovrebbe usare Escper uscire dalla modalità di inserimento, poiché il Esctasto è lontano dagli altri sulle tastiere moderne. Usa Ctrl+ ]o crea la tua mappatura.
void-pointer

3
Ottieni una tastiera francese: puoi eliminare il turno.
Ricco

1
void-pointer, Ctrl + C non funziona invece di Ctrl + [come sostituto di Esc?
zumalifeguard,

Risposte:


154

Shiftzz in modalità comando salva il file ed esce.


4
Questo ha assolutamente bisogno di Shift o è semplicemente Z Z(maiuscolo)? Inoltre, non è necessario essere in modalità comando per farlo funzionare, il che lo renderebbe Esc Z Z?
un CVn

35
Inoltre, ESC Z Qper uscire senza salvare
Carlos Campderrós,

Strg + zz è semplicemente sbagliato.
Invierà

2
@ MichaelKjörling: la ZZ deve solo essere maiuscola.
LarsH

2
Questo però chiude solo un file. Ho molte schede aperte quindi ci vorrebbero tonnellate di Z.
Filippo

41

ZZin modalità normale salva il file corrente se modificato ed esce o chiude la finestra / scheda corrente (uguale :xma non :wqche scrive il file anche se non è stato modificato).

Per uscire incondizionatamente dopo aver scritto tutti i file modificati in tutte le finestre, schede e buffer nascosti, è necessario :xa(non uscirà comunque se alcuni file non possono essere scritti per un motivo o un altro)

Per uscire incondizionatamente senza cambiare nulla: ZQ(uguale a :q!).


1
Penso che intendi la modalità normale. La "modalità comando" potrebbe essere facilmente confusa con la modalità riga di comando
David Brown,

@DavidBrown, command modeè il nome tradizionale, ma sono d'accordo che normal modeè meno ambiguo. Ho modificato la risposta.
Stéphane Chazelas,

33

:x è una chiave in meno di :wq


11
Non buono come Shift + Z Zse!
CodeMedic

@CodeMedic È di gran lunga il più veloce se ce l'hai nno : ;e nno ; :, comunque. (più vno lo stesso). Ero dubbioso sullo scambio, ma non tornerai mai indietro. :nno ,: :silent! unmap :<CR>:silent! unmap ;<CR>e :nno ,; :nno ; :<CR>:nno : ;<CR>:vno ; :<CR>:vno : ;<CR>sostenere ciò che è strano yap@"e tale.
jillill

20

Crea una mappatura personalizzata per le attività utilizzate di frequente. Se esci spesso da vim, crea una mappatura con pochi tasti, ad es

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

Se l' <leader>opzione è impostata su virgola usando la let mapleader = ","virgola due volte è un modo rapido per uscire da vim e salvare le modifiche. Se si desidera salvare un altro tasto premuto quando si è in modalità inserimento, creare anche un corrispondente mapping modalità inserimento:

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

Ma attenzione, questo potrebbe accidentalmente abbastanza vim quando si colpisce il <leaderdoppio.


1
Grazie per una risposta approfondita, mi incoraggia a saperne di più su Vim (che tendo ad evitare)!
Vemv,

4
@vemv, dovresti lavorare al contrario - ogni volta che devi fare la stessa cosa più di una volta, vedi se c'è un modo per fermarlo!
Wayne Werner,

17

Usa questo per fare la magia. Solo due battute!

Ctrl+ sper salvare,

ctrl+ dper salvare ed uscire,

ctrl+ qper uscire dalle modifiche scartate.

1 °. Metti questo sul tuo ~ / .bashrc

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

2 °. Posizionalo sul tuo ~ / .vimrc

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>

3 °. Riavvia vim e ottieni giorni più produttivi!


2
Perché usare CTRL + D / CTRL + Q per salvare + esci, e non solo ZZ e ZQ?
Evan Carroll,

Ciao Evan, ctrl + d / ctrl + q servono solo due sequenze di tasti, mentre ZZ e ZQ necessitano di tre combinazioni di tasti. MAIUSC + Z + Z / MAIUSC + Q + Q. Le chiavi di salvataggio sono significative se lo facciamo frequentemente. Inoltre abbiamo sollevato con ctrl + s come scorciatoia di salvataggio, penso che sia più intuitivo piuttosto che ZZ o ZQ.
Brain90,

4
Ho sempre considerato ZQ pericoloso. Puoi voler premere ZQ per non salvare, ma se accidentalmente premi Z due volte sei andato e hai salvato il tuo file senza significato.
Keith Devens,

1
se sei su un Mac, usa ~ / .bash_profile. E ricorda di cercarlo.
Snowcrash,

16

Che ne dite solo Qdi 'Esci'?

Ciò richiederà solo una pressione del tasto maiuscola (cioè Shifte Q). È anche una combinazione chiave che raramente ho colpito per caso.

Per impostazione predefinita, vim mappa Q a switch to "Ex" mode. Se trovi che la modalità "Ex" è inutile (o fastidiosa) come me, allora non perderai affatto la sua funzione predefinita.

Ecco cosa ho nel mio .vimrcfile:

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

Se si dispone di buffer non salvati, verrà richiesto prima di uscire.


in qualche modo nel mio VIM Q era già mappato di :qdefault. Grazie per il consiglio.
user13107,

7

Ecco un cheat sheet per VIM

Cheat-sheet-per-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.

Alcuni di più ::

Chiusura e salvataggio dei file

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.

Gli ultimi 2 dovrebbero aggiungere "dall'ultima volta che il file è stato salvato" ... è "ovvio" ma un principiante potrebbe capire "fantastico, è da quando ho aperto vi", e scoprire che no, se hanno salvato durante la sessione, ": q!" non ripristinerà affatto il file originale e nemmeno ": e!". Scarterà semplicemente le modifiche che si sono verificate dall'ultima volta che il file è stato aperto o salvato (qualunque sia l'ultimo).
Olivier Dulac,

3

La mia soluzione semplice e conveniente per uscire e salvare da VIM - è:

Ctrl+ Xscorciatoia.

Basta aggiungere questo codice al .vimrcfile:

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

1
Bello, ma perché <C-Q>non è mappabile?
friederbluemle,

2

Provare

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

Se usi fFtT, ci vorrà un po 'per abituarsi, ma ora smettere è solo ;xper salvare se necessario, ;qper non salvare. Inoltre, anche tutto il resto diventa più veloce.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.