เป็นกลุ่ม - บันทึกและปิดบัฟเฟอร์ในคำสั่งเดียว


25

ฉันมีไฟล์ข้อความมากมายในไดเรกทอรีและฉันรู้ว่าฉันจะต้องแก้ไขไฟล์แต่ละไฟล์

ฉันเริ่มที่บรรทัดการยกย่องด้วย

vim *.txt

ซึ่งเปิดไฟล์เป็นบัฟเฟอร์แยกต่างหากในกลุ่มและปล่อยให้ฉันดูที่แรก ฉันแก้ไขมัน - จากนั้นฉันใช้ ': w' เพื่อบันทึกและ ': bd' เพื่อปิดบัฟเฟอร์และไปยังส่วนถัดไป

นี่ ': w: bd' เพื่อบันทึกและปิดบัฟเฟอร์รู้สึกยาวสำหรับฉันและฉันสงสัยว่ามีวิธีการทำนินจา vim เพิ่มเติม - วิธีที่แนะนำในการบันทึกและปิดบัฟเฟอร์ที่คุณกำลังทำงานอยู่ในหนึ่งรู้สึกโฉบคืออะไร?


วิธีที่แนะนำของฉันจะเป็นเพียงแค่การย้ายไปยัง:nextบัฟเฟอร์และเขียน / :wqaทุกอย่างใกล้ละครั้งงานของคุณจะเสร็จสิ้นด้วย ซึมนี้ว่าคุณมีในของคุณ:set hidden ~/.vimrc
romainl

คำตอบ:


22

เมื่อผ่านไฟล์ที่จะเป็นกลุ่มบนบรรทัดคำสั่งพวกเขาจะไม่ได้เปิดเฉพาะในบัฟเฟอร์ แต่ยังเติมรายการอาร์กิวเมนต์ ดังนั้นคุณสามารถใช้คำสั่งเช่น:nextและ:firstเพื่อเลื่อนดู (และ:argdoสำหรับการประมวลผลแบบแบตช์ซึ่งอาจเป็นกลอุบายที่ดี) คำสั่งที่ฉันแนะนำสำหรับคำถามของคุณคือ:wnext(รูปแบบย่อ:wn) ซึ่ง:writeเป็นบัฟเฟอร์ปัจจุบันแล้วไปที่:nextอันใดอันหนึ่ง

คุณไม่จำเป็นต้อง:bdeleteบัฟเฟอร์อย่างชัดเจนโดยเฉพาะเมื่อคุณเรียกใช้ Vim จาก command-line พร้อมชุดของไฟล์จากนั้นก็ปิดมันเมื่อคุณทำเสร็จแล้ว (ข้อยกเว้นเดียวที่ฉันคิดได้คือการยกเลิกการโหลดไฟล์ขนาดใหญ่เพื่อบันทึกหน่วยความจำระบบหรือใช้ GVIM อินสแตนซ์เดียวสำหรับการแก้ไขอื่น ๆ อีกมากมาย)

อย่างไรก็ตามหากคุณต้องการสิ่งนี้จริงๆเพียงแค่กำหนดคำสั่งที่กำหนดเองเช่น

:command Wd write|bdelete

5
คุณได้กล่าวถึงสองวิธีในการบรรลุสิ่งที่ OP ที่ร้องขอ :w|bdแต่คนที่สองไม่ชัดเจน:
Jonno

-> นี่เป็นข้อได้เปรียบของการปรับวิธีการใช้งานของ OP ให้เหมาะสมแม้ว่าฉันจะเห็นด้วย:nextในบางกรณี
Jonno

4

ในขณะที่ฉันยอมรับว่าคุณไม่จำเป็นต้องลบบัฟเฟอร์เปิดที่คุณไม่ได้ใช้อยู่ในขณะนี้ แต่ฉันต้องการลบบัฟเฟอร์เนื่องจากฉันเปิดใช้งานแท็บบรรทัดของสายการบิน Vim-airlinesซึ่งจะแสดงบัฟเฟอร์เปิดทั้งหมดตลอดเวลาที่ด้านบนของ หน้าต่าง. ฉันมีดังต่อไปนี้ในของฉัน.vimrc:

nnoremap qq :w\|bd<cr>

qq บันทึกและปิดบัฟเฟอร์ปัจจุบัน แต่ยังยุ่งกับฟังก์ชัน "record macro" ของ vim (ซึ่งฉันโอเคด้วย)


2
การติดตั้งในตัวZZเป็นสิ่งสำคัญ แต่นั่นก็จบลงด้วยการประหยัดและเลิกใช้ Vim โดยสิ้นเชิงแทนที่จะลบเพียงบัฟเฟอร์ ตัวพิมพ์เล็กzzอาจเป็นแผนที่ทางเลือกที่น่าสนใจสำหรับใครก็ตามที่พบมาโครมีค่ามากกว่าการวางมุมมองไว้ที่กึ่งกลางของเคอร์เซอร์ปัจจุบัน
8bittree

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