Яка різниця між "кинути" і "перервати"?


23

Коли я намагаюся відкрити файл із декількох екземплярів vim, я отримую помилку з кількома параметрами:

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

Яка різниця між "Вийти" та "Аборт"?

Моя перша здогадка полягала в тому, що коли я намагаюся відкрити декілька файлів, і лише один редагується в іншому місці, "вийти" може пропустити цей і "перервати" вийти з програми, але це, очевидно, неправильно - обидва просто відмовляються від усієї спроби при редагуванні та поверненні до терміналу.


2
Чи :help swap-exists-choicesвідповідає на ваше запитання?
FDinoff

@FDinoff це допомагає, але я все ще не зовсім зрозумілий на "Abort". "також скасувати подальші команди. Це корисно при завантаженні скрипту, який редагує кілька файлів" - Чи повинні бути "подальші команди" від сценарію vim? Чи справді достатньо поширеного сценарію vim для відкриття нових буферів, що це викликає занепокоєння?
Кевін

Відповіді:


20

Спробуйте це: запустіть vim file1у терміналі, а потім запустіть vim -p file1 file2в іншому терміналі. Друга команда підкаже, як зазначено вище. Якщо ви відповісте Quit, ви все одно можете редагувати file2. Якщо ви відповідаєте, Abortви просто киньте Vim, тим самим "перериваючи будь-які подальші команди".


Тож чи є лише різниця при відкриванні вкладок або розділених вікон ( -p/ -o/ -O)? Просто використання vim file1 file2виходів повністю як вийти, так і перервати, коли файл1 редагується; і коли файл2 редагується, запит не з’являється, поки не натисніть наступний, і в цьому випадку і вийдіть, і перервіть, просто перейдіть до файлу1.
Кевін

1
Ви не розумієте. Відкриття файлів - це, по суті, послідовність команд. vim file1 file2робить дві речі: він встановлює аргументи (річ, до якої можна отримати доступ argv()), і завантажує перший файл у буфер. Другий файл фактично завантажується лише при запуску :n(або подібному). Коли Vim запропонує вам аргументи вже встановлені, тож якщо у вас Quitв цей момент не залишається команди для подальшого запуску. Крім того, інші речі також враховуються як команди, fi autocmds та команди, встановлені за допомогою vim -c. Ви повинні думати про все це з точки зору команд, а не з вражених файлів.
lcd047

4

@FDinoff запропонував перевірити довідку vim . У випадку, якщо хтось захотів побачити їх легше:

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.

Наскільки я можу сказати, переривати, коли ви використовуєте vim для перегляду декількох файлів, наприклад:

vim file1.txt file2.txt

Якщо перший заблокований, і ви зателефонуєте вийти, він перейде до file2.txt, тоді як аборт буде повністю вирватися з програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.