Was ist der Unterschied zwischen "Beenden" und "Abbrechen"?

23

Wenn ich versuche, eine Datei aus mehreren vim-Instanzen zu öffnen, erhalte ich eine Fehlermeldung mit mehreren Optionen:

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

Was ist der Unterschied zwischen "Beenden" und "Abbrechen"?

Meine erste Vermutung war, wenn ich versuche, mehrere Dateien zu öffnen und nur eine an einer anderen Stelle bearbeitet wird, wird diese möglicherweise übersprungen und das Programm abgebrochen, aber das ist offensichtlich falsch - beide unterbrechen einfach den gesamten Versuch beim Bearbeiten und fallen zurück zum Terminal.

Kevin
quelle
2
Ist die :help swap-exists-choicesAntwort auf Ihre Frage?
FDinoff
@FDinoff es hilft, aber ich bin mir nicht ganz sicher, ob "Abbruch" noch möglich ist. msgstr "auch weitere Befehle abbrechen. Dies ist nützlich, wenn ein Skript geladen wird, das mehrere Dateien bearbeitet" - Sollen die "weiteren Befehle" von einem vim - Skript stammen? Ist es wirklich üblich genug, dass ein VIM-Skript neue Puffer öffnet, die Anlass zur Sorge geben?
Kevin

Antworten:

20

Versuchen Sie Folgendes: Führen Sie vim file1in einem Terminal und dann vim -p file1 file2in einem anderen Terminal aus. Der zweite Befehl fordert Sie wie oben auf. Wenn Sie antworten Quit, können Sie immer noch bearbeiten file2. Wenn Sie antworten Abort, beenden Sie einfach Vim und "brechen alle weiteren Befehle ab".

lcd047
quelle
Gibt es also nur einen Unterschied beim Öffnen in Registerkarten oder geteilten Fenstern ( -p/ -o/ -O)? Verwenden Sie vim file1 file2beim Beenden und Abbrechen nur die Exits, wenn Datei1 bearbeitet wird. Wenn Datei2 bearbeitet wird, wird die Eingabeaufforderung erst angezeigt, wenn Sie das nächste Mal darauf klicken. In diesem Fall müssen Sie sowohl beenden als auch abbrechen und einfach zu Datei1 zurückkehren.
Kevin
1
Du verstehst nicht. Das Öffnen von Dateien ist im Wesentlichen eine Folge von Befehlen. vim file1 file2macht zwei Dinge: Es setzt die Argumente (das Ding, auf das Sie zugreifen können argv()) und lädt die erste Datei in den Puffer. Die zweite Datei wird tatsächlich nur geladen, wenn Sie sie ausführen :n(oder ähnlich). Wenn Vim Sie dazu auffordert, sind die Argumente bereits festgelegt. Wenn Sie Quitzu diesem Zeitpunkt also keinen "weiteren" Befehl mehr ausführen müssen. Auch andere Dinge zählen als Befehle, Dateien autocmdund Befehle, die mit gesetzt wurden vim -c. Sie sollten das alles in Befehlen und nicht in betroffenen Dateien sehen.
lcd047
4

@FDinoff schlug vor, die vim-Hilfe zu überprüfen . Für den Fall, dass jemand diese leichter sehen wollte:

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.

Soweit ich das beurteilen kann, ist abort für das Durchsuchen mehrerer Dateien mit vim wie folgt:

vim file1.txt file2.txt

Wenn die erste gesperrt ist und Sie quit aufrufen, wird die Datei file2.txt aufgerufen, während der Abbruch die Anwendung vollständig beendet.

AJFaraday
quelle