Jaka jest różnica między „rezygnacją” a „przerwaniem”?

23

Gdy próbuję otworzyć plik z wielu instancji vim, pojawia się błąd z kilkoma opcjami:

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

Jaka jest różnica między „Quit” a „Abort”?

Moim pierwszym przypuszczeniem było, że gdy próbuję otworzyć wiele plików i tylko jeden jest edytowany gdzie indziej, „zamknij” może pominąć ten jeden i „przerwać”, zamknąć program, ale to oczywiście jest nieprawidłowe - oba po prostu rezygnują z całej próby podczas edycji i wróć do terminala.

Kevin
źródło
2
Czy :help swap-exists-choicesodpowiada na twoje pytanie?
FDinoff
@FDinoff to pomaga, ale wciąż nie jestem do końca pewien, czy „Przerwij”. „przerywaj także dalsze polecenia. Jest to przydatne podczas ładowania skryptu, który edytuje kilka plików” - Czy „dalsze polecenia” powinny pochodzić ze skryptu vim? Czy naprawdę dość powszechne jest, aby skrypt vima otwierał nowe bufory, co stanowi problem?
Kevin

Odpowiedzi:

20

Spróbuj tego: uruchom vim file1w terminalu, a następnie uruchom vim -p file1 file2w innym terminalu. Drugie polecenie wyświetli monit jak wyżej. Jeśli odpowiesz Quit, nadal możesz edytować file2. Jeśli odpowiesz Abort, po prostu wyjdź z Vima, „przerywając dalsze polecenia”.

lcd047
źródło
Czy jest tylko różnica podczas otwierania w kartach lub podzielonych oknach ( -p/ -o/ -O)? Tylko użycie vim file1 file2wyjść całkowicie przy wychodzeniu i przerywaniu, gdy plik1 jest edytowany; a gdy plik2 jest edytowany, monit nie pojawia się, dopóki nie naciśniesz następnego, w takim przypadku zarówno wyjdź, jak i przerwij, po prostu wróć do pliku1.
Kevin,
1
Nie rozumiesz Otwieranie plików jest zasadniczo sekwencją poleceń. vim file1 file2robi dwie rzeczy: ustawia argumenty (rzecz, do której można uzyskać dostęp argv()) i ładuje pierwszy plik do bufora. Drugi plik jest ładowany tylko podczas uruchamiania :n(lub podobnego). Kiedy Vim wyświetli monit, argumenty zostały już ustawione, więc jeśli Quitw tym momencie nie ma już polecenia „dalsze” do uruchomienia. Także inne rzeczy liczą się również jako polecenia, fi autocmdi polecenia ustawione za pomocą vim -c. Powinieneś pomyśleć to wszystko w kategoriach poleceń, a nie w kategoriach plików, których dotyczy problem.
lcd047
4

@FDinoff zasugerował sprawdzenie pomocy vima . Jeśli ktoś chciałby je łatwiej zobaczyć:

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.

O ile mogę stwierdzić, abort jest używany, gdy używasz vima do sprawdzania wielu plików, na przykład:

vim file1.txt file2.txt

Jeśli pierwszy jest zablokowany i wywołujesz polecenie quit, przejdzie do pliku file2.txt, a przerwanie całkowicie wyłączy się z aplikacji.

AJFaraday
źródło