ฉันจะโหลดบัฟเฟอร์ทั้งหมดพร้อมกันได้อย่างไร


20

เมื่อทำงานในสาขาฟีเจอร์ในgitฉันมักจะต้องซ่อนการเปลี่ยนแปลงของฉันเพื่อส่งการแก้ไขข้อบกพร่องไปยังสาขาหลัก เมื่อฉันทำงานกับการเปลี่ยนแปลงฉันgit stash popซึ่งปรับปรุงการประทับเวลาในไฟล์

แม้ว่าไฟล์จะเหมือนกัน แต่ครั้งต่อไปที่ฉันพยายามบันทึกฉันจะได้รับ:

คำเตือน: ไฟล์มีการเปลี่ยนแปลงตั้งแต่อ่าน !!!

คุณต้องการเขียนถึงมันจริง ๆ (y / n)?

git stash popฉันไม่ต้องการที่จะโหลดไฟล์โดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลงบนดิสก์เท่านั้นเมื่อฉัน

ตอนนี้ฉันโหลดแต่ละบัฟเฟอร์อีกครั้งด้วยตนเอง ( :e) มีวิธีใดที่ฉันสามารถทำได้ในคำสั่งเดียว?

คำตอบ:


26

ดู:help bufdoว่าคุณต้องการทำอะไร มันจะดำเนินการคำสั่งในแต่ละบัฟเฟอร์ในรายการบัฟเฟอร์ ตัวอย่างเช่น:

:bufdo e

คุณอาจต้องการ:help noconfirmปิดการใช้งานกล่องโต้ตอบการยืนยันก่อนที่จะออกbufdoคำสั่ง

:set noconfirm

และเปิดใช้งานอีกครั้งหลังจากbufdoคำสั่ง

:set confirm

1
หากต้องการบังคับให้ลอง: :bufdo! e.
kenorb

และไม่มีการพิมพ์ข้อความบนหน้าจอ: เงียบ! bufdo e
เวอร์เนอร์

12

คุณสามารถทำได้ด้วย:checktimeคำสั่ง จากเอกสาร :

:checkt[ime]        Check if any buffers were changed outside of Vim.
                    This checks and warns you if you would end up with two
                    versions of a file.

คำสั่งจะถามคุณว่าจะทำอย่างไรสำหรับแต่ละบัฟเฟอร์ไฟล์ที่มีการเปลี่ยนแปลงเวลา หากต้องการปิดใช้งานสิ่งนี้สำหรับไฟล์ที่ไม่ได้เปลี่ยนคุณสามารถทำได้:set autoreadเพื่อบังคับให้ vim ทำการโหลดซ้ำ เป็นกลุ่มจะถามคุณว่าเนื้อหาระหว่างบัฟเฟอร์และไฟล์บนดิสก์มีการเปลี่ยนแปลง

คุณสามารถตั้งค่าแผนที่ดังนี้เพื่อความสะดวกในการใช้งาน:

nnoremap <F5> :checktime<CR>

นี่คือข้อมูลโบนัสบางอย่างที่ไม่ได้เป็นส่วนหนึ่งของคำตอบ: สำหรับฉันใน OpenSUSE, gvim (GTK GUI สำหรับ vim) จะทำสิ่งนี้โดยอัตโนมัติเมื่อได้รับโฟกัส ฉันไม่รู้จริงๆว่าทำไมถึงเป็นเช่นนั้นและฉันไม่ได้ตรวจสอบระบบอื่น ๆ แต่ฉันคิดว่ามันอาจมีประโยชน์ในฐานะที่เป็นพิเศษ อาจมีบางคนยืนยันได้
tokoyami

สิ่งนี้มีประโยชน์จริง ๆ ! สิ่งที่ฉันทำในตอนท้ายของฉันคือการรวมคำสั่งนี้เป็นส่วนหนึ่งของทางลัดสลับแท็บของฉัน iennoremap tl :tabnext<CR>:checktime<CR>
cr8ivecodesmith

1
@tokoyami คุณลักษณะที่คุณมีในgvimอาจจะเกี่ยวข้องกับเหตุการณ์ในFocusGained vimคุณสามารถค้นหาข้อมูลที่เกี่ยวข้องบางอย่างที่นี่ - unix.stackexchange.com/a/383044/99801
Victor Yarema
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.