วิธีการตั้งค่าเครื่องหมายความยาวบรรทัดใน vim / gvim


75

ตัวแก้ไขข้อความ GUI บางตัวมีเส้นแนวตั้งซึ่งทำหน้าที่เป็นตัวระบุความยาวบรรทัด (ช่วยให้บรรทัดสั้นกว่า 80 ตัวอักษรในไฟล์ซอร์สโค้ด)

เป็นไปได้หรือไม่ที่จะมีสิ่งที่คล้ายกันใน vim / gvim ฉันรู้เกี่ยวกับตัวเลือกไม้บรรทัดไม้บรรทัดแต่มันไม่สะดวกในการติดตามภาพบนหน้าจอขนาดใหญ่

แก้ไข: เมื่อ googling สำหรับ "colorcolumn" เพื่อเรียนรู้เพิ่มเติมฉันพบว่าคำถามนี้ซ้ำกับhttps://stackoverflow.com/questions/235439/vim-80-column-layout-concerns


ซ้ำกับไซต์อื่น ... stackoverflow.com/questions/235439/…
Trevor Boyd Smith

คำตอบ:


131

เพียงแค่ดำเนินการนี้

:set colorcolumn=72

นอกจากนี้คุณยังสามารถนำหน้าอาร์กิวเมนต์ด้วย-หรือ+ใส่เครื่องหมายที่หลายคอลัมน์ทางซ้ายหรือขวาtextwidthและยอมรับรายการของคอลัมน์ที่คั่นด้วยเครื่องหมายจุลภาค ฉันคิดว่าcolorcolumnตัวเลือกมีเฉพาะใน Vim 7.3 ดู

:help colorcolumn

8
ว้าวกลุ่มไม่เคยหยุดที่จะทำให้ฉันประหลาดใจ!
ปีเตอร์นอร์

4
ดี! นอกจากนี้ยังมีประโยชน์เมื่อcolumns=80, wrapการตั้งค่าและcolorcolumn=81,161,241,321,401,481,561,641,721,801- แสดงถึง 10 เส้นห่อด้วยคอลัมน์แรกไฮไลต์
Amir

20

จากการพูดคุยของ" Damian Better Better Vim"ที่Damian Conway ใน OSCON 2013:

highlight ColorColumn ctermbg=magenta
call matchadd('ColorColumn', '\%81v', 100)

สิ่งนี้ส่งผลให้ตัวละครที่ถูกเน้นเป็นสีม่วงแดง (ภาพหน้าจออยู่ในDarkCyan) เมื่อเส้นไปเกิน 80 ตัวอักษรสูงสุด

เป็นกลุ่มที่มีการเปิดใช้งานการเน้น

สำหรับ gVim: เป็นการดีที่สุดที่จะย้าย 2 บรรทัดเหล่านั้นไปยังส่วนสุดท้ายของ.vimrcไฟล์เพื่อให้แน่ใจว่าทำงานได้


ฮะ ฉันเพียงแค่ตอบของคุณมากคำถามที่คล้ายกันเกี่ยวกับ ... โลกเล็ก ๆ นี้! superuser.com/questions/771558/…
lornix

ฉันใส่คำตอบนี้แล้วจำได้ว่าฉันไม่สามารถทำได้ใน gVim ดังนั้นฉันจึงถาม ;)
Isxek

ว้าวนี่ยอดเยี่ยมจริงๆ! นี่เป็นฟีเจอร์ที่ฉันไม่รู้จะมองหา ฉันใช้รูปแบบ'\$81v\S'ที่จับคู่กับอักขระที่ไม่ใช่ช่องว่างเท่านั้น ซึ่งหมายความว่าไฮไลต์จะไม่ปรากฏเมื่อบรรทัดมีความยาว 80 ตัวอักษร (ซึ่งเป็นสิ่งที่รบกวนฉันจริงๆ) ดูสิ่งนี้สำหรับข้อมูลเพิ่มเติมstackoverflow.com/questions/12985042/…
fvgs

1
ต้องการแก้ไขคู่ของความคิดเห็นก่อนหน้าของฉัน ควรจะได้รับ$ %ในทำนองเดียวกันตอนนี้ฉันใช้รูปแบบ\%81v.เนื่องจากมั่นใจว่าคอลัมน์ที่ 81 จะถูกเน้นสำหรับตัวละครในคอลัมน์ที่ 81 ซึ่งอาจเป็นสิ่งที่คุณต้องการ
fvgs

2

คุณสามารถลองสิ่งนี้:

grep '.\{81\}' file

หรือ

set colorcolumn=80

(หรือเทียบเท่าชวเลข)

set cc=80

หรือดังกล่าวข้างต้น:

match ErrorMsg '\%>80v.\+'

0

ด้านล่างนี้เป็นเคล็ดลับงุ่มง่ามจากHacking Vim: ตำราสำหรับการรับประโยชน์สูงสุดจากโปรแกรมแก้ไข Vim ล่าสุด โดย Kim Schultz

มันไฮไลท์ด้วยErrorMsg(โดยทั่วไปจะเป็นสีแดงสด) ทุกบรรทัดที่ยาวเกิน 80 อักขระ ทำงานได้ดีสำหรับฉัน

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction

ฉันควรทำอย่างไรกับตัวอย่างนี้ เพียงแค่ติดมันเป็น. vimrc?
vtest

ลองก่อนโดยเพียงแค่เรียก:call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)พอเพียง แต่ฉันจะไม่แนะนำสิ่งนี้อีกต่อไปเนื่องจาก @garyjohn รู้ดีกว่า
unperson325680
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.