Cara mewarnai komentar setelah kolom yang ditentukan

8

Saya pernah diberi bahan-bahan ini untuk memungkinkan penolong ini vimmenunjukkan jenis garis vertikal untuk membantu menegakkan aturan PEP8 tentang batas panjang garis pada kolom 80:

"   Long lines highlighting.
nnoremap <Leader>H :call<SID>LongLineHLToggle()<cr>
hi OverLength ctermbg=none cterm=none
match OverLength /\%>80v/
fun! s:LongLineHLToggle()
    if !&diff
        if !exists('w:longlinehl')
            let w:longlinehl = matchadd('ErrorMsg', '.\%>80v', 0)
            echo "Long lines highlighted"
        else
            call matchdelete(w:longlinehl)
            unl w:longlinehl
            echo "Long lines unhighlighted"
        endif
    endif
endfunction

Beraksi:

toggler highlighter garis panjang beraksi

Saya menggunakan semua ini untuk menandai kolom ke-80.

Dengan waktu dan usaha yang cukup, saya sangat bisa memiliki fasilitas serupa vimuntuk menandai teks jauh melampaui kolom 72 hanya ketika berkomentar. Saya kira itu sudah dikodekan oleh seseorang di suatu tempat di beberapa titik. Apakah Anda sudah tahu di mana menemukan cuplikan itu?

13260
sumber
Anda dapat mengetahui apakah ada sesuatu yang disorot sebagai komentar dengan synID()dan synIDattr(). Sesuatu seperti: if ((synIDattr(synID(line("."), 72, 0), "name") =~ 'comment\c')
Tumbler41
Apakah saya seharusnya menautkan itu ke nnoremapatau autocmdatau sesuatu? Menulis itu ke :konsol melemparkan E110dan E15🙁.
13260

Jawaban:

10

Coba wilayah sintaks yang terkandung:

syn match TooLong contained containedin=pythonComment /\%50c.*/
hi link TooLong Error

Alih-alih 50, gunakan 80atau 72atau kolom mana saja yang Anda suka.

masukkan deskripsi gambar di sini

muru
sumber
Yang vimversi itu?
13260
1
8.0.586, menggunakan molokai sebagai skema warna.
muru
Suka vim --versionpresentasi VIM - Vi IMproved 8.0.586 ...? Saya tidak yakin dengan apa yang saya lakukan, tetapi saya pikir tidak bekerja untuk saya seperti milik Anda. Milikku mengatakan VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 10 2017 00:54:29) ..., itu adalah vanilla VIM dari Debian Jessie.
13260
Tidak ada yang baru dalam hal ini, semua fitur yang saya gunakan di sini sudah sangat tua, dan harus bekerja dengan Jessie's 7.4.488 (karena ini bekerja pada Vim 7.4.160 milik CentOS 7). Katakanlah, apakah Anda menguji ini dalam file Python? Karena Anda menyebutkan PEP8, saya menggunakan containedin=pythonComment. Jika Anda menggunakan jenis file lain, Anda harus mencari tahu apa wilayah sintaks untuk komentar dan menggunakannya.
muru
2
@uprego Jalankan perintah itu setelah Anda membuka file Python. Cukup menambahkan baris-baris itu ke vimrctidak akan berfungsi, karena file sintaks yang dimuat nanti kemungkinan akan menghapus semua aturan saat ini. Gunakan autocmd atau ~/.vim/after/syntax/python.vim.
muru