Menyiapkan beberapa aturan sorotan dalam vim

16

Saya mencoba mengatur aturan untuk menyoroti spasi dan garis spasi tambahan yang panjangnya melebihi batas dengan menambahkan ini ke .vimrc saya:

highlight ExtraWhitespace ctermbg=lightgray guibg=lightgray
match ExtraWhitespace /\s\+$/

highlight OverLength ctermbg=lightgray guibg=lightgray
match OverLength /\%>80v.\+/

Namun, sepertinya hanya mengambil mana yang terakhir. Saya tidak dapat menemukan cara agar keduanya berfungsi secara bersamaan.

ICR
sumber

Jawaban:

9

Satu arah:

highlight EWOL ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
match EWOL /\%>20v.\+\|\s\+$/

Lain:

highlight ExtraWhitespace ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
match ExtraWhitespace /\s\+$/

highlight OverLength ctermbg=lightgray ctermfg=black guibg=lightgray guifg=black
2match OverLength /\%>80v.\+/

Juga tersedia: 3match. Hingga tiga pertandingan dapat aktif sekaligus. Atau Anda dapat menggunakan matchadd()untuk membuat kecocokan tanpa batas kuantitas.

Catatan: 3match digunakan oleh matchparen, jadi akan konflik jika Anda menggunakannya.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
7

Gunakan matchadd(), jadi tambahkan ini ke .vimrc:

highlight ExtraWhitespace ctermbg=grey guibg=grey
call matchadd('ExtraWhitespace', '\s\+$', 11)

highlight OverLength ctermbg=lightgrey guibg=lightgrey
call matchadd('OverLength', '\%>80v.\+')

Untuk melihat semua kecocokan:

:echo getmatches()

Untuk menghapus kecocokan, gunakan matchdelete().

James Haigh
sumber
1

Bagaimana dengan menggunakan ini

: sy [ntax] cocok {nama-grup} [{opsi}] [pengecualian] {pola} [{opsi}]

:highlight ExtraWhitespace ctermbg=lightgray guibg=lightgray
:syntax match ExtraWhitespace /\s\+$/
:highlight OverLength ctermbg=lightgray guibg=lightgray
:syntax match OverLength /\%>80v.\+/

Anda dapat mencocokkan banyak pola menggunakan ini ...

imbichie
sumber