เช่น @flukus กล่าวในความคิดเห็นสำหรับคำตอบก่อนหน้านี้ที่คุณทำได้call feedkeys["lh"]
(มันเลื่อนเคอร์เซอร์ไปทางขวาและกลับไปทางซ้ายซึ่ง Normaly จะไม่ทำอันตรายเมื่อดูไฟล์บันทึก)
ดังนั้นหากคุณรวมคำตอบที่เหลือเข้าด้วยกันคุณมี oneliner คุณสามารถเรียกใช้จาก ex (whithin vim) เมื่อจำเป็น:
:set autoread | au CursorHold * checktime | call feedkeys("lh")
(หากคุณต้องการข้าม (เกือบ) ไปยังจุดสิ้นสุดของไฟล์เพียงใช้ "G" แทน "lh" พร้อมปุ่มป้อน)
คำอธิบาย:
- autoread : อ่านไฟล์เมื่อมีการเปลี่ยนแปลงจากภายนอก (แต่มันไม่ทำงานด้วยตัวเองไม่มีตัวจับเวลาภายในหรืออะไรทำนองนั้นมันจะอ่านไฟล์ก็ต่อเมื่อ vim ดำเนินการเช่นคำสั่งในอดีต:!
- เวลาตรวจสอบ CursorHold * : เมื่อผู้ใช้ไม่ได้ย้ายเคอร์เซอร์ตามเวลาที่ระบุไว้ใน 'updatetime' (ซึ่งคือ 4000 มิลลิวินาทีโดยค่าเริ่มต้น) เวลาตรวจสอบจะถูกเรียกใช้ซึ่งตรวจสอบการเปลี่ยนแปลงจากภายนอกไฟล์
- เรียก feedkeys ("lh") : เคอร์เซอร์ถูกย้ายหนึ่งครั้งไปทางขวาและกลับไปทางซ้ายแล้วไม่มีอะไรเกิดขึ้น (... ซึ่งหมายความว่า CursorHold ถูกทริกเกอร์ซึ่งหมายความว่าเรามีการวนซ้ำ )
นอกจากนี้คุณสามารถ:set syntax=logtalk
ระบายสีบันทึก
หากต้องการหยุดการเลื่อนเมื่อใช้call feedkeys("G")
ให้ดำเนินการ:set noautoread
- ตอนนี้กลุ่มจะบอกว่าไฟล์มีการเปลี่ยนแปลง ans ถามว่าต้องการอ่านการเปลี่ยนแปลงหรือไม่)
(สิ่งนี้มีผลข้างเคียงหรือไม่?)
แก้ไข:ฉันเห็น side-effect อย่างหนึ่ง: ถ้ามีคนใช้ "G" es ที่ feedkey มันจะเลื่อนลงทุกบัฟเฟอร์ที่เปิดอยู่ในปัจจุบัน?! ดังนั้นจึงเป็นไปไม่ได้ที่จะทำงานในบัฟเฟอร์ด้านซ้ายของหน้าต่าง Splittet ในขณะที่มีบัฟเฟอร์ด้านขวาเลื่อนไฟล์บันทึกโดยอัตโนมัติ