Bagaimana cara mengatur penanda panjang garis di vim / gvim?

75

Beberapa editor teks GUI memiliki garis vertikal yang berfungsi sebagai penanda panjang garis (ini membantu menjaga garis lebih pendek dari 80 karakter dalam file kode sumber).

Apakah mungkin untuk memiliki sesuatu yang serupa di vim / gvim? Saya tahu tentang opsi vim penguasa , tetapi tidak terlalu praktis untuk mengikutinya secara visual di layar lebar.

Sunting: ketika googling untuk "colorcolumn" untuk mempelajari lebih lanjut, saya telah menemukan bahwa pertanyaan ini adalah duplikat dari https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns

vtest
sumber
duplikat di situs lain ... stackoverflow.com/questions/235439/…
Trevor Boyd Smith

Jawaban:

131

Jalankan saja ini

:set colorcolumn=72

Anda juga dapat awalan argumen dengan -atau +untuk menempatkan penanda yang banyak kolom ke kiri atau kanan textwidth, dan itu menerima daftar kolom yang dipisahkan koma. Saya pikir colorcolumnopsi hanya di Vim 7.3. Lihat

:help colorcolumn
garyjohn
sumber
8
Wow, vim tidak pernah berhenti membuat saya takjub!
Peter Nore
4
Bagus! Juga berguna ketika columns=80, wrapdiatur dan colorcolumn=81,161,241,321,401,481,561,641,721,801- menampilkan hingga 10 garis yang dibungkus dengan kolom pertama disorot.
Amir
20

Dari pembicaraan Damian Conway "More Instantly Better Vim" di OSCON 2013:

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

Ini menghasilkan karakter yang disorot dalam magenta (tangkapan layar dalam DarkCyan) ketika garis melampaui maksimum 80 karakter.

vim dengan penyorotan diaktifkan

Untuk gVim: lebih baik memindahkan 2 baris itu ke bagian terakhir.vimrc file Anda untuk memastikannya berfungsi.

Isxek
sumber
Hah! Saya baru saja menjawab pertanyaan Anda yang sangat mirip tentang ini ... dunia kecil! superuser.com/questions/771558/…
lornix
Saya memasukkan jawaban ini, lalu ingat saya tidak bisa melakukannya di gVim, jadi saya bertanya. ;)
Isxek
Wow, ini luar biasa! Ini adalah jenis fitur yang saya bahkan tidak tahu harus mencari. Saya menggunakan pola '\$81v\S'yang hanya cocok dengan karakter yang bukan spasi. Ini berarti puncak tidak akan ditampilkan ketika panjang garis tepat 80 karakter (yang merupakan sesuatu yang sangat mengganggu saya). Lihat ini untuk info lebih lanjut stackoverflow.com/questions/12985042/...
fvgs
1
Ingin membuat beberapa koreksi pada komentar saya sebelumnya. The $seharusnya %. Demikian juga, saya sekarang menggunakan pola \%81v.karena ini memastikan kolom ke-81 akan disorot untuk karakter apa pun di kolom ke-81, yang mungkin apa yang Anda inginkan.
fvgs
2

Anda bisa mencoba ini:

grep '.\{81\}' file

atau

set colorcolumn=80

(atau padanan steno)

set cc=80

atau seperti yang disebutkan di atas:

match ErrorMsg '\%>80v.\+'
Gabriel Zalles
sumber
0

Di bawah ini adalah trik ceroboh dari Hacking Vim: A Cookbook untuk mendapatkan yang terbaik dari Editor Vim Terbaru oleh Kim Schultz.

Ini menyoroti dengan ErrorMsg(biasanya merah terang) setiap garis yang melebihi 80 karakter. Bekerja dengan baik untuk saya.

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction
unperson325680
sumber
Apa yang harus saya lakukan dengan cuplikan ini? Cukup masukkan ke .vimrc?
vtest
Mencoba dulu hanya dengan menelepon saja :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4). Tapi saya tidak akan merekomendasikan ini lagi karena @garyjohn tahu sesuatu yang lebih baik
unperson325680