อะไรคือความแตกต่างระหว่าง "ออกจาก" และ "ยกเลิก"


23

เมื่อฉันพยายามเปิดไฟล์จากอินสแตนซ์ vim หลายตัวฉันพบข้อผิดพลาดหลายตัวเลือก:

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

"Quit" และ "Abort" ต่างกันอย่างไร

การเดาครั้งแรกของฉันคือเมื่อฉันพยายามเปิดไฟล์หลายไฟล์และมีเพียงไฟล์เดียวเท่านั้นที่ถูกแก้ไขที่อื่น "เลิก" อาจข้ามไปที่หนึ่งและ "ยกเลิก" ออกจากโปรแกรม แต่ที่ไม่ถูกต้องชัดเจน - ทั้งคู่ละทิ้งความพยายามทั้งหมด ที่แก้ไขและวางกลับไปที่เทอร์มินัล


2
ไม่:help swap-exists-choicesตอบคำถามของคุณ?
FDinoff

@FDinoff ช่วยได้ แต่ฉันยังไม่ค่อยชัดเจนกับ "Abort" "ยังยกเลิกคำสั่งเพิ่มเติมนี้มีประโยชน์เมื่อโหลดสคริปต์ที่แก้ไขไฟล์หลายไฟล์" - "คำสั่งเพิ่มเติม" ควรมาจากสคริปต์ vim หรือไม่? เป็นเรื่องธรรมดาหรือไม่ที่สคริปต์กลุ่มจะเปิดบัฟเฟอร์ใหม่ซึ่งเป็นข้อกังวลหรือไม่
เควิน

คำตอบ:


20

ลองสิ่งนี้: รันvim file1ในเทอร์มินัลจากนั้นรันvim -p file1 file2ในเทอร์มินัลอื่น คำสั่งที่สองจะแจ้งให้คุณดังกล่าวข้างต้น ถ้าคุณตอบว่าคุณยังจะได้รับการแก้ไขQuit file2หากคุณตอบAbortว่าคุณเพิ่งออกจาก Vim ดังนั้น "ยกเลิกคำสั่งเพิ่มเติมใด ๆ "


ดังนั้นจะมีความแตกต่างเฉพาะเมื่อเปิดในแท็บหรือแยก windows ( -p/ -o/ -O)? เพียงใช้vim file1 file2ทางออกทั้งหมดทั้งออกจากและยกเลิกเมื่อ file1 กำลังถูกแก้ไข; และเมื่อมีการแก้ไข file2 พรอมต์จะไม่ปรากฏขึ้นจนกว่าจะมีการกดปุ่มถัดไปและในกรณีนั้นทั้งการเลิกและการยกเลิกเพียงแค่ย้อนกลับไปที่ file1
เควิน

1
คุณไม่เข้าใจ การเปิดไฟล์เป็นลำดับของคำสั่ง vim file1 file2ทำสองสิ่ง: ตั้งค่าอาร์กิวเมนต์ (สิ่งที่คุณสามารถเข้าถึงได้argv()) และโหลดไฟล์แรกในบัฟเฟอร์ ไฟล์ที่สองจะถูกโหลดจริงเมื่อคุณเรียกใช้:n(หรือคล้ายกัน) เมื่อเสียงเรียกพร้อมท์ให้คุณอาร์กิวเมนต์ได้รับการตั้งค่าแล้วดังนั้นหากคุณQuitณ จุดนั้นไม่มีคำสั่ง "เพิ่มเติม" ที่เหลือให้ทำงาน นอกจากนี้ยังมีสิ่งอื่น ๆ นับเป็นคำสั่งเกินไป Fi และคำสั่งที่กำหนดด้วยautocmd vim -cคุณควรคิดทั้งหมดนี้ในแง่ของคำสั่งไม่ใช่ในแง่ของไฟล์ที่ได้รับผลกระทบ
lcd047

4

@FDinoff ปัญหาการตรวจสอบความช่วยเหลือเป็นกลุ่ม ในกรณีที่ทุกคนต้องการเห็นสิ่งเหล่านี้ได้ง่ายขึ้น:

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 file1.txt file2.txt

หากล็อคแรกและคุณเรียกเลิกก็จะไปที่ file2.txt ในขณะที่ยกเลิกจะแยกออกจากโปรแกรมทั้งหมด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.