จะมี tail -f แสดงเอาต์พุตสีด้วย vim ได้อย่างไร?


9

ในคำถามนี้Gilles ตอบ

แต่ความเป็นไปได้อีกคือการทำงานtail -fในEmacsเปลือกกันชนและใช้ความสามารถของไวยากรณ์ Emacs ระบายสี

เพราะฉันใช้เสียงเรียกผมต้องการที่จะทำเช่นนี้กับกลุ่มไม่emacs
ไม่เป็นกลุ่มที่มีคุณลักษณะนี้?


2
Vim เป็นเพียงเครื่องมือแก้ไขข้อความซึ่งแตกต่างจาก Emacs ... อย่างไรก็ตามมีปลั๊กอินท้ายสำหรับ Vim ที่อาจใช้งานได้
jasonwryan

นอกจากนี้ยังมีปลั๊กอิน vimpagerที่อาจใช้กลอุบาย
bsd

1
มันต้องเป็นโปรแกรมแก้ไขข้อความหรือไม่? ถ้าคุณแค่ต้องการสีข้อความคุณสามารถใช้ Clide
golimar

นอกจากนี้ยังมีTailBundleเป็นกลุ่ม
jofel

มีคำถามที่คล้ายกันคือที่นี่ โซลูชันอธิบายการใช้มัลติทาสก์และวิธีกำหนดค่าบางทีมันอาจมีประโยชน์
ออกจากระบบ

คำตอบ:


2

คุณสามารถเขียนปลั๊กอินแบบมัลติเธรดเพื่อเปลี่ยนบัฟเฟอร์แบบเรียลไทม์ใน Python หรือสคริปต์อื่น ๆ ที่ Vim รองรับและมีเธรด

แต่นี่ใช้ได้เฉพาะเทอร์มินัลเท่าที่ฉันรู้ อย่างน้อยใน X11 เวอร์ชัน GUI จะหยุดทำงานหากมีการแก้ไข GUI โดยเธรดอื่น

หากคุณยอมรับโปรแกรมอื่น ๆgrcและcczeสามารถสตรีม colorize ได้


0

ฉันชอบมันสั้นและไม่มีแฮ็คหรือสคริปต์ภายนอกมากมาย คุณสามารถเรียกใช้ oneliner นี้จาก ex (whithin vim) เมื่อต้องการ (หรือใส่คำสั่งแต่ละคำสั่งใน vimrc เมื่อเปิดไฟล์บันทึก)

:set autoread | au CursorHold * checktime | call feedkeys("lh")

และนอกจากนี้คุณสามารถ:set syntax=logtalkสีบันทึก

(หากคุณต้องการข้าม (เกือบ) ไปยังจุดสิ้นสุดของไฟล์เพียงแค่ใช้ "G" แทน "lh" ด้วยปุ่มลัด)

คำอธิบาย:

  • autoread: อ่านไฟล์เมื่อมีการเปลี่ยนแปลงจากภายนอก (แต่มันไม่ทำงานด้วยตัวมันเองไม่มีตัวจับเวลาภายในหรืออะไรทำนองนั้นมันจะอ่านไฟล์เมื่อ vim ทำการกระทำเช่นเดียวกับคำสั่งในอดีต :!
  • CursorHold * checktime: เมื่อผู้ใช้ไม่ได้ย้ายเคอร์เซอร์ตามเวลาที่ระบุในupdatetime(ซึ่งคือ 4,000 มิลลิวินาทีโดยค่าเริ่มต้น) checktimeจะดำเนินการซึ่งจะตรวจสอบการเปลี่ยนแปลงจากภายนอกไฟล์
  • call feedkeys("lh"): เคอร์เซอร์จะถูกย้ายหนึ่งครั้งด้านขวาและด้านหลังซ้าย และจากนั้นไม่มีอะไรเกิดขึ้น (... ซึ่งหมายถึงนั่นCursorHoldคือสิ่งที่ถูกเรียกซึ่งหมายความว่าเรามีการวนรอบ )

หากต้องการหยุดการเลื่อนเมื่อใช้งานcall feedkeys("G")ให้เรียกใช้งาน:set noautoread- ตอนนี้กลุ่มจะบอกว่าไฟล์ถูกเปลี่ยนและถามว่ามีใครต้องการอ่านการเปลี่ยนแปลงหรือไม่)

ฉันชอบความคิดที่จะดู logfiles ในกลุ่ม (แทน tail -f) เช่นเมื่อคุณทำงานในเซสชัน ssh โดยไม่มีหน้าจอ / tmux นอกจากนี้คุณสามารถคัดลอกโดยตรงจาก logfile หากจำเป็นหรือบันทึกผลลัพธ์โดยตรงหรือ ... สิ่งที่คุณสามารถทำได้ด้วย vim :)

* จากคำตอบนี้(อ้างอิงจากคำตอบของPhanHaiQuangและความคิดเห็นโดยflukus )

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