ฉันมีปัญหาในการดูเนื้อหาของไฟล์อัปเดตไฟล์ภายนอกแสดงไฟล์ที่เปลี่ยนแปลงและมีตัวเลือกให้แก้ไขเมื่อจำเป็น ฉันแก้ไขด้วยตัวเลือกบรรทัดคำสั่งเซิร์ฟเวอร์ / ระยะไกลเป็นแรงบันดาลใจจากคำตอบนี้
ด้วยคำสั่งต่อไปนี้ไฟล์สามารถโหลดใหม่ผ่านคำสั่งภายนอก ก่อนอื่นให้เปิดไฟล์ที่สงสัยด้วย Vim ขณะที่เริ่มต้นเซิร์ฟเวอร์อินสแตนซ์
vim --servername JABBERWOCKY /tmp/alice.log
echo "Curiouser and curiouser" >> /tmp/alice.log
สมมติว่าไฟล์ที่ได้รับการเปลี่ยนแปลงภายนอกเช่นโดย เมื่อจำเป็นให้ส่งคำสั่งไปยังเซิร์ฟเวอร์อินสแตนซ์เพื่อโหลดไฟล์ซ้ำ คำสั่งนี้จะเสร็จอย่างรวดเร็วและไม่วางไข่แก้ไขใหม่
vim --servername JABBERWOCKY --remote-send ":e<CR>"
หากไฟล์ที่เปิดมีการเปลี่ยนแปลงเป็นกลุ่มและภายนอกจะมีข้อขัดแย้งระหว่างการโหลดซ้ำ (ข้อความเตือนจะปรากฏขึ้น) สำหรับกรณีที่ว่าการตัดสินใจจะต้องมีการทำ: ทิ้งไว้กับที่และให้การเปลี่ยนแปลงในกลุ่มหรือยกเลิกการเปลี่ยนแปลงในท้องถิ่นและบังคับให้โหลด
คำสั่ง--remote-send
ด้านบนนี้ต้องการการโหลดซ้ำด้วยตนเอง อย่างไรก็ตามคำสั่งนั้นสามารถเชื่อมโยงกับการวนรอบอย่างง่ายโดยใช้ Bash's for
/ while
หรือการใช้หนึ่งซับในแฮ็กใน Linux / Unix:
watch -n 1 'vim --servername JABBERWOCKY --remote-send ":e<CR>"'
แม้ว่าจะไม่ได้ทดสอบฉันมั่นใจว่าบางสิ่งเช่นนี้สามารถรับรู้ได้ใน PowerShell ด้วย
บน Linux / Unix คุณสามารถรับรู้แนวทางการขับเคลื่อนเหตุการณ์โดยการฟังเหตุการณ์ระบบไฟล์โดยใช้เช่นไลบรารีinotifyหากคุณไม่ได้ใช้ระบบไฟล์ที่บ้าเกินไป โดยส่วนตัวผมชอบใช้เครื่องมือEntrจำนวนมากซึ่งดูเหมือนว่าจะถูกรวมอยู่ในลินุกซ์ที่สำคัญ จากนั้นฉันจะได้รับ:
echo /tmp/alice.log | entr vim --servername JABBERWOCKY --remote-send ":e<CR>"
" Compare buffer with saved version
nnoremap gd :DiffSaved<CR>