Sự khác biệt giữa những người bỏ thuốc lá và người phá thai là gì?


23

Khi tôi cố mở một tệp từ nhiều phiên bản vim, tôi gặp lỗi với một số tùy chọn:

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

Sự khác biệt giữa "Thoát" và "Hủy bỏ" là gì?

Dự đoán đầu tiên của tôi là, khi tôi đang cố mở nhiều tệp và chỉ một tệp đang được chỉnh sửa ở nơi khác, "thoát" có thể bỏ qua tệp đó và "hủy bỏ" thoát khỏi chương trình, nhưng điều đó rõ ràng là không chính xác - cả hai chỉ từ bỏ toàn bộ nỗ lực tại chỉnh sửa và thả trở lại thiết bị đầu cuối.


2
:help swap-exists-choicestrả lời câu hỏi của bạn không?
FDinoff

@FDinoff nó giúp, nhưng tôi vẫn chưa rõ về "Hủy bỏ". "cũng hủy bỏ các lệnh tiếp theo. Điều này hữu ích khi tải tập lệnh chỉnh sửa một số tệp" - "Các lệnh tiếp theo" có phải là từ tập lệnh vim không? Có thực sự đủ phổ biến cho một tập lệnh vim để mở bộ đệm mới mà đây là một mối quan tâm?
Kevin

Câu trả lời:


20

Hãy thử điều này: chạy vim file1trong một thiết bị đầu cuối, sau đó chạy vim -p file1 file2trong một thiết bị đầu cuối khác. Lệnh thứ hai sẽ nhắc bạn như trên. Nếu bạn trả lời Quit, bạn vẫn có thể chỉnh sửa file2. Nếu bạn trả lời, Abortbạn chỉ cần thoát Vim, do đó "hủy bỏ bất kỳ lệnh nào nữa".


Vì vậy, chỉ có một sự khác biệt khi mở trong các tab hoặc chia cửa sổ ( -p/ -o/ -O)? Chỉ sử dụng vim file1 file2lối thoát hoàn toàn trên cả thoát và hủy bỏ khi tập tin1 đang được chỉnh sửa; và khi tệp 2 đang được chỉnh sửa, lời nhắc sẽ không xuất hiện cho đến khi nhấn tiếp theo và trong trường hợp đó, cả thoát và hủy bỏ chỉ cần quay lại tệp1.
Kevin

1
Bạn không hiểu. Mở tập tin về cơ bản là một chuỗi các lệnh. vim file1 file2thực hiện hai điều: nó đặt các đối số (thứ bạn có thể truy cập argv()) và nó tải tệp đầu tiên trong bộ đệm. Tệp thứ hai thực sự chỉ được tải khi bạn chạy :n(hoặc tương tự). Khi Vim nhắc bạn các đối số đã được đặt, vì vậy nếu bạn Quittại thời điểm đó, không còn lệnh "tiếp tục" nào để chạy. Ngoài ra, những thứ khác cũng được tính là các lệnh, autocmdvà các lệnh được đặt với vim -c. Bạn nên nghĩ tất cả điều này về các lệnh, không phải về các tệp bị ảnh hưởng.
lcd047

4

@FDinoff đề nghị kiểm tra trợ giúp vim . Trong trường hợp bất cứ ai muốn nhìn thấy những điều này dễ dàng hơn:

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.

Theo như tôi có thể nói hủy bỏ là khi bạn sử dụng vim để kiểm tra qua nhiều tệp, như vậy:

vim file1.txt file2.txt

Nếu cái đầu tiên bị khóa và bạn gọi thoát, nó sẽ chuyển sang file2.txt, trong khi đó việc hủy bỏ sẽ thoát ra khỏi ứng dụng hoàn toàn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.