วิธีการทำให้ Vim แสดงสีตามที่ระบุโดยรหัสสี


59

ในระยะสั้นฉันกำลังพยายามแทนที่lessด้วยvim( vimpager) ฉันมีการตั้งค่าสำหรับสคริปต์เพื่อคายสี (และตัวหนาและทุกอย่างดี) เมื่อใดก็ตามที่พวกเขาสามารถ lessเข้าใจรหัสสีและแสดงรหัสเหล่านั้นอย่างชัดเจน ฉันจะvimแยกวิเคราะห์รหัสและแสดงสี / ความหนาได้lessอย่างไร?

คำตอบ:


44

สองคำตอบ:

สั้นที่หนึ่ง: คุณต้องการที่จะใช้สคริปต์เป็นกลุ่มAnsiEsc.vim มันจะปกปิดลำดับการหลบหนีของ ANSI จริงในไฟล์ของคุณและใช้การเน้นไวยากรณ์เพื่อให้สีของข้อความเหมาะสม ปัญหาเกี่ยวกับการใช้สิ่งนี้ในเพจเจอร์คือคุณจะต้องให้ vim รู้จักเมื่อใช้สิ่งนี้ ฉันไม่แน่ใจว่าคุณสามารถโหลดได้ตลอดเวลาหรือจะขัดแย้งกับไฟล์ไวยากรณ์อื่น ๆ คุณจะต้องทดลองกับมัน

คำตอบยาว ๆ : สิ่งที่ดีที่สุดที่คุณคาดหวังคือโซลูชันที่ไม่สามารถพกพาได้บางส่วน หักไม่จริงเข้าใจลำดับหนีขั้วตั้งแต่เหล่านี้ส่วนใหญ่จะขึ้นอยู่กับขั้ว แต่น้อยสามารถรับรู้ (ย่อยของก) เหล่านี้และจะได้รู้ว่าจะผ่านพวกเขาผ่านไปยังสถานีถ้าคุณใช้-r(หรือ-Rตัวเลือก) เทอร์มินัลจะตีความลำดับ escape และเปลี่ยนคุณสมบัติของข้อความ (สีตัวหนาขีดเส้นใต้ ... ) เป็นกลุ่มเป็นตัวแก้ไขมากกว่าเพจเจอร์ไม่เพียงแค่ส่งอักขระควบคุมดิบไปยังเทอร์มินัล จำเป็นต้องแสดงในบางวิธีเพื่อให้คุณสามารถแก้ไขได้จริง คุณสามารถใช้คุณสมบัติอื่น ๆ ของ vim เช่นการซ่อนเร้นและการเน้นไวยากรณ์เพื่อซ่อนลำดับและใช้สำหรับการตั้งค่าสีของข้อความอย่างไรก็ตามมันจะจัดการกับชุดย่อยของเทอร์มินัลเสมอและอาจไม่ทำงานในเทอร์มินัลบางตัว .

นี่เป็นเพียงหนึ่งในหลาย ๆ ปัญหาที่คุณจะพบเมื่อคุณพยายามใช้โปรแกรมแก้ไขข้อความเป็นเพจเจอร์


ในการวางสั้นคุณต้องเขียนส่วนหนึ่งของเทอร์มินัลอีมูเลเตอร์ใน Vim ส่วนที่จัดการลำดับการหลบหนีเทอร์มินัลที่มีอยู่ในอินพุตของคุณ
Gilles

ขอบคุณฉันคิดว่าฉันยอมแพ้ ถ้ามันไม่ง่ายมันก็ไม่สมเหตุสมผลอีกต่อไป
phunehehe

1
@JanHlavacek ลิงก์เสีย :(
Nitrodist

19
@Nitrodist: less -r FILE( แหล่งที่มา )
Adobe

1
ดูเหมือนว่าลิงก์ของ Jan ได้ย้ายไปที่linux-tips.com/t/how-to-enable-syntax-highlighting-in-less/208
Timothy Zorn

2

ตอนนี้ด้วย vim 8 คุณสามารถใช้โหมดเทอร์มินัล:terminalจากนั้นในเทอร์มินัลนั้นแล้วcat myfileกลับไปที่โหมดปกติด้วย Ctrl-w N

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