Qual è la differenza tra "quit" e "abort"?


23

Quando provo ad aprire un file da più istanze di vim, ricevo un errore con diverse opzioni:

Swap file "~/.vim/tmp/file.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:

Qual è la differenza tra "Esci" e "Annulla"?

La mia prima ipotesi è stata, quando sto provando ad aprire più file e solo uno viene modificato altrove, "esci" potrebbe saltare quello e "interrompere" il programma, ma ciò è evidentemente errato - entrambi abbandonano l'intero tentativo in fase di modifica e ritorno al terminale.


2
Non :help swap-exists-choicesrispondere alla tua domanda?
FDinoff,

@FDinoff aiuta, ma non sono ancora del tutto chiaro su "Abort". "interrompe anche ulteriori comandi. Ciò è utile quando si carica uno script che modifica diversi file" - Gli "ulteriori comandi" dovrebbero provenire da uno script VIM? È davvero abbastanza comune per uno script vim aprire nuovi buffer che questa sia una preoccupazione?
Kevin,

Risposte:


20

Prova questo: esegui vim file1in un terminale, quindi esegui vim -p file1 file2in un altro terminale. Il secondo comando ti chiederà come sopra. Se rispondi Quit, puoi ancora modificarlo file2. Se rispondi Abort, esci da Vim, "interrompendo così altri comandi".


Quindi c'è solo una differenza quando si apre in schede o finestre divise ( -p/ -o/ -O)? Basta usare le vim file1 file2uscite interamente sia su quit che su abort durante la modifica di file1; e quando il file2 è in fase di modifica, il prompt non viene visualizzato fino a quando non si preme il pulsante successivo, e in quel caso sia esci che interrompi tornano al file1.
Kevin,

1
Tu non capisci L'apertura dei file è essenzialmente una sequenza di comandi. vim file1 file2fa due cose: imposta gli argomenti (la cosa a cui puoi accedere argv()) e carica il primo file nel buffer. Il secondo file viene effettivamente caricato solo quando si esegue :n(o simile). Quando Vim ti chiede che gli argomenti sono già stati impostati, quindi se Quita quel punto non c'è più nessun comando "ulteriore" da eseguire. Inoltre, anche altre cose contano come comandi, fi autocmds e comandi impostati con vim -c. Dovresti pensare a tutto ciò in termini di comandi, non in termini di file interessati.
lcd047,

4

@FDinoff ha suggerito di controllare la guida di vim . Nel caso qualcuno volesse vederli più facilmente:

WHAT TO DO?                                     *swap-exists-choices*

If dialogs are supported you will be asked to select one of five choices:

  Swap file ".main.c.swp" already exists! ~
  [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~

O  Open the file readonly.  Use this when you just want to view the file and
   don't need to recover it.  You might want to use this when you know someone
   else is editing the file, but you just want to look in it and not make
   changes.

E  Edit the file anyway.  Use this with caution!  If the file is being edited
   in another Vim, you might end up with two versions of the file.  Vim will
   try to warn you when this happens, but better be safe then sorry.

R  Recover the file from the swap file.  Use this if you know that the swap
   file contains changes that you want to recover.

Q  Quit.  This avoids starting to edit the file.  Use this if there is another
   Vim editing the same file.
      When you just started Vim, this will exit Vim.  When starting Vim with
   files in several windows, Vim quits only if there is a swap file for the
   first one.  When using an edit command, the file will not be loaded and you
   are taken back to the previously edited file.

A  Abort.  Like Quit, but also abort further commands.  This is useful when
   loading a script that edits several files, such as a session with multiple
   windows.

D  Delete the swap file.  Use this when you are sure you no longer need it.
   For example, when it doesn't contain changes, or when the file itself is
   newer than the swap file.
      On Unix this choice is only offered when the process that created the
   swap file does not appear to be running.

Per quanto ne so, abort è quando usi vim per controllare più file, in questo modo:

vim file1.txt file2.txt

Se il primo è bloccato e tu chiami esci, passerà a file2.txt, mentre interromperà uscirà completamente dall'applicazione.

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.