Apa perbedaan antara "berhenti" dan "batal"?

23

Ketika saya mencoba membuka file dari beberapa instance vim, saya mendapatkan kesalahan dengan beberapa opsi:

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

Apa perbedaan antara "Berhenti" dan "Batalkan"?

Dugaan pertama saya adalah, ketika saya mencoba untuk membuka banyak file dan hanya satu yang sedang diedit di tempat lain, "berhenti" mungkin melewatkan yang satu dan "batalkan" keluar dari program, tetapi itu jelas salah - keduanya hanya mengabaikan seluruh upaya saat mengedit dan kembali ke terminal.

Kevin
sumber
2
Apakah :help swap-exists-choicesmenjawab pertanyaan Anda?
FDinoff
@FDinoff itu membantu, tapi aku masih belum cukup jelas tentang "Batalkan". "juga batalkan perintah lebih lanjut. Ini berguna saat memuat skrip yang mengedit beberapa file" - Apakah "perintah selanjutnya" seharusnya berasal dari skrip vim? Apakah benar-benar cukup umum untuk skrip vim untuk membuka buffer baru sehingga ini menjadi masalah?
Kevin

Jawaban:

20

Coba ini: jalankan vim file1di terminal, lalu jalankan vim -p file1 file2di terminal lain. Perintah kedua akan meminta Anda seperti di atas. Jika Anda menjawab Quit, Anda masih bisa mengedit file2. Jika Anda menjawab AbortAnda baru saja keluar dari Vim, maka "batalkan perintah lebih lanjut".

lcd047
sumber
Jadi apakah hanya ada perbedaan saat membuka tab atau membagi windows ( -p/ -o/ -O)? Hanya menggunakan vim file1 file2keluar sepenuhnya pada kedua berhenti dan batal ketika file1 sedang diedit; dan ketika file2 sedang diedit, prompt tidak muncul sampai menekan berikutnya, dan dalam hal itu keduanya berhenti dan batal hanya kembali ke file1.
Kevin
1
Kamu tidak mengerti Membuka file pada dasarnya adalah urutan perintah. vim file1 file2melakukan dua hal: ia menetapkan argumen (hal yang dapat Anda akses dengan argv()), dan memuat file pertama di buffer. File kedua sebenarnya hanya dimuat ketika Anda menjalankan :n(atau serupa). Ketika Vim meminta Anda argumen telah ditetapkan, jadi jika Anda Quitpada saat itu tidak ada "lanjut" perintah yang tersisa untuk dijalankan. Juga, hal-hal lain juga dihitung sebagai perintah, fi autocmds dan perintah yang ditetapkan vim -c. Anda harus memikirkan semua ini dalam hal perintah, bukan dalam hal file yang terpengaruh.
lcd047
4

@FDinoff menyarankan untuk memeriksa bantuan vim . Seandainya ada yang ingin melihatnya dengan lebih mudah:

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.

Sejauh yang saya tahu, batalkan adalah ketika Anda menggunakan vim untuk memeriksa beberapa file, seperti:

vim file1.txt file2.txt

Jika yang pertama dikunci dan Anda memanggil berhenti, itu akan pergi ke file2.txt, sedangkan batalkan akan keluar dari aplikasi sepenuhnya.

AJFaraday
sumber