รีเฟรชไฟล์ทั้งหมดในบัฟเฟอร์จากดิสก์ในกลุ่ม


124

คำสั่งในการรีเฟรชไฟล์จากเวอร์ชันบนดิสก์คือ :e!

ฉันจะทำเช่นเดียวกันกับไฟล์ทั้งหมดในบัฟเฟอร์ได้อย่างไร

ความเป็นมา: ฉันต้องการสิ่งนั้นเพราะฉันใช้ git กับหลายสาขาโดยเปิดเป็นกลุ่มเดียวที่มีบัฟเฟอร์ เมื่อฉันชำระเงินสาขาฉันต้องการรีเฟรชเป็นกลุ่ม

คำตอบ:


87

อ่านเอกสารประกอบbufdoควรทำตามที่คุณต้องการ


33
โอเคดีมาก: bufdo e! จะทำอย่างนั้น แต่มีการแจ้งให้โหลด (Y / N) ทุกครั้ง ฉันจะกำจัดมันได้อย่างไร?
odwl

21
ใช้set noconfirmก่อนใช้bufdoคำสั่ง ( set confirmหลังจากนั้นจึงจะสามารถใช้ซ้ำได้)
PMF

22
bufdo eทิ้งบัฟเฟอร์ทั้งหมดที่ไม่เน้นไวยากรณ์
Steven Lu

4
@StevenLu ตรวจสอบคำตอบของ PaulFenney ด้านล่าง
DBedrenko

12
ทำไมคนถึงโหวตเรื่องนี้? ไม่ใช่แค่คำตอบ แต่ทิศทางที่นำไปสู่คุณหมายความว่าการเน้นไวยากรณ์ของคุณถูกปิดใช้งานหลังจากโหลดซ้ำ
Dmitry Minkovsky

120

:checkt[ime]คำสั่งที่ถูกออกแบบมาเพื่อวัตถุประสงค์อย่างนี้

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

นอกจากนี้ยังหลีกเลี่ยงปัญหาการเน้นไวยากรณ์ที่กล่าวถึงโดย Steven Lu ในคำตอบที่ยอมรับ จะปิดการเน้นไวยากรณ์จากการออกแบบ:bufdo

พบผ่าน: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html


19

นี่คือสิ่งที่ฉันลงเอยด้วยการใส่. vimrc:

fun! PullAndRefresh()
  set noconfirm
  !git pull
  bufdo e!
  set confirm
endfun

nmap <leader>gr call PullAndRefresh()

7

จาก:help autoread:

เมื่อตรวจพบว่ามีการเปลี่ยนแปลงไฟล์ภายนอก Vim และไม่มีการเปลี่ยนแปลงภายใน Vim ให้อ่านอีกครั้งโดยอัตโนมัติ เมื่อไฟล์ถูกลบจะไม่เสร็จสิ้น

ถ้าเช่นฉันคุณแค่ต้องการโหลดบัฟเฟอร์ที่ค้าง แต่ไม่ได้แก้ไขแบบพาสซีฟเสมอดูเหมือนว่ามันควรจะทำให้งานเสร็จ

อย่างไรก็ตามรายละเอียดสุดท้ายคือเมื่อกลุ่มสังเกตเห็นบัฟเฟอร์เก่า checktimeที่สามารถนำมาบังคับกับ หากคุณมีการตั้งค่าเหตุการณ์โฟกัสเราสามารถเรียกใช้checktimeเมื่อใดก็ตามที่เราได้รับโฟกัสดังนี้:

set autoread
autocmd FocusGained * checktime

คำตอบนี้ยังมีรายละเอียดที่น่าสนใจ


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