ฉันจะตั้งค่าไม้บรรทัดที่คอลัมน์ที่ต้องการได้อย่างไร


50

เมื่อโค้ดในภาษาต่าง ๆ ฉันมักจะต้อง จำกัด บรรทัดของฉันให้มีความยาวเฉพาะ (ปกติ 79 หรือ 80 ตัวอักษร)

ฉันเคยเห็นสิ่งนี้ทำในบรรณาธิการอื่น ๆ ผ่านการใช้ไม้บรรทัด (เส้นทึบแสดงที่คอลัมน์) หรือโดยการเปลี่ยนสีของข้อความเพื่อระบุว่ามันผ่านไปแล้ว

ฉันจะให้ Vim บอกฉันได้อย่างไรเมื่อฉันเข้าใกล้หรือเกิน 79 ตัวอักษรในหนึ่งบรรทัด?

คำตอบ:


64

คุณสามารถแสดงไม้บรรทัดในบรรทัดที่ระบุได้โดยใช้ตัวเลือก:set colorcolumn( :set ccสั้น ๆ ) ซึ่งมีเฉพาะใน Vim 7.3 หรือใหม่กว่า

set colorcolumn=80

การทำเช่นนี้จะตั้งค่าสีพื้นหลังของคอลัมน์นั้นเป็นสีแดงทำให้คุณมีไม้บรรทัดภาพทำงาน

รูปภาพของคอลัมน์สีเริ่มต้นตั้งค่าเป็น 80

หากคุณต้องการที่จะใช้สีที่แตกต่างอื่นที่ไม่ใช่สีแดง (ซึ่งจริงๆยืนออก) คุณสามารถเปลี่ยนสีโดยการตั้งค่าสำหรับhighlightColorColumn

highlight ColorColumn ctermbg=0 guibg=lightgrey

สีที่กำหนดเองสำหรับคอลัมน์

คุณสามารถตั้งค่าสีสำหรับเวอร์ชันเทอร์มินัลของ Vim โดยใช้ctermอาร์กิวเมนต์และเวอร์ชัน GUI ของ Vim โดยใช้guibgอาร์กิวเมนต์ นี่0คือค่าของรหัสหลบหนี ASCII สำหรับสีดำซึ่งเป็นสีเทาเมื่อสว่างขึ้น (ซึ่งเป็นค่าเริ่มต้น) ค่าlightgreyนี้ใช้สำหรับ Vim เวอร์ชัน GUI เช่น gVim เพื่อเปลี่ยนสีพื้นหลังเป็นสีเทาอ่อน


10
คุณยังสามารถมีหลายคอลัมน์สีคั่นด้วยเครื่องหมายจุลภาค!
200_success

4
รวมเข้ากับช่วงการเข้าร่วมและคุณสามารถมีคอลัมน์หลายสีพร้อมกับรหัสน้อยมาก . vimrc ของฉันมี:execute "set colorcolumn=" . join(range(81,335), ',')
โพลโพล

19

ในฐานะที่เป็นภาคผนวกของคำตอบของ Kevin คุณสามารถมีหลายคอลัมน์สีได้ เมื่อฉันรหัสบางครั้งฉันมีขีด จำกัด "อ่อน" ที่ 80 คอลัมน์และ จำกัด "ยาก" ที่ 120 คอลัมน์ ดังนั้นฉันต้องการเส้นที่ 80 แล้วทุกคอลัมน์หลัง 120 จะเป็นสี

ฉันทำสิ่งนี้ด้วย

let &colorcolumn="80,".join(range(120,999),",")

แน่นอนว่าสิ่งนี้สามารถปรับเปลี่ยนได้อย่างง่ายดายตามความต้องการอื่น ๆ


14

Vim 7.3 นำเสนอcolorcolumnตัวเลือกดังรายละเอียดดีมากในคำตอบอื่น ๆ

อย่างไรก็ตามหากคุณไม่มีเวอร์ชั่น 7.3 ไม่ว่าด้วยเหตุผลใดคุณยังคงสามารถบ่งชี้ภาพได้ว่าคุณมีจำนวนคอลัมน์เกินกว่าจำนวนที่กำหนดโดยใช้matchฟังก์ชันการทำงานของ vim (ดู:help matchรายละเอียด)

โดยพื้นฐานแล้วคำสั่งจับคู่ช่วยให้คุณสามารถสร้างไฮไลท์ถาวรสำหรับข้อความที่ตรงกับการแสดงออกปกติที่กำหนด :match ColorColumn "\%80v."จะเน้นข้อความในคอลัมน์ 80 ด้วยกลุ่ม "ColorColumn" แน่นอนคุณสามารถแทนที่กลุ่มไฮไลต์และค่าคอลัมน์ใด ๆ หากคุณต้องการตัวบ่งชี้ภาพที่ชัดเจนนิพจน์"\%>79v.\+"จะเน้นคอลัมน์ 80 ขึ้นไป

( \%80vหมายถึง "จับคู่ในคอลัมน์เสมือน 80" และ\%>79vหมายถึง "จับคู่หลังคอลัมน์เสมือน 79 ดู:help /\%cเพิ่มเติม)

วิธีการนี้จะเน้นเมื่อมีตัวละครที่เกิดขึ้นจริงในปัจจุบันคอลัมน์ที่ระบุ colorcolumnแต่ที่ทำให้สายตาน้อยกว่าที่สอดคล้องกัน


4
โดยส่วนตัวแล้วฉันพบว่าวิธีที่สอดคล้องน้อยกว่าของmatches ดีกว่าเนื่องจากมันเน้นเฉพาะเส้นที่ฉันเกินขีด จำกัด 80 คอลัมน์แทนที่จะแสดงเส้นสีแดงขนาดใหญ่ (กับฉัน) ที่ล่วงล้ำทางด้านขวาของหน้าจอ ดังนั้นใน vimrc ของฉันสำหรับ Python ฉันใช้call matchadd('ColorColumn', '\(\%80v\|\%100v\)')(80 และ 100 เป็นความยาวที่แนะนำใน PEP 8)
jalanb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.