Dalam T&J ini , diamati bahwa ada grup sorotan untuk CursorLineNr
, yang berlaku untuk nomor baris untuk baris kursor saat set cursorline
aktif.
Saya perhatikan bahwa menggunakan cursorline juga mengubah warna untuk grup sorotan lain SpecialKey
, yang berlaku jika Anda miliki, misalnya:
set list listchars=tab:\|_,trail:-
Masalah dengan ini bagi saya adalah saya menggunakan latar belakang yang gelap (dan cursorline yang gelap). SpecialKey
Pengaturan normal saya juga sangat gelap, sehingga listchar
simbol hanya sedikit terlihat. Tetapi menggunakan cursorline
mereka putih , yang membuat trail
arang tidak bisa dibedakan dari benar-benar memukul -
. Karakter jejak digunakan setiap kali Anda mengetik spasi di akhir baris, jadi ini lebih dari masalah kecil; biasanya mengetik garis dari awal hingga akhir melibatkan sejumlah ruang yang harus dengan mudah dibedakan dari kesalahan ketik dasbor saat bekerja (atau sebaliknya, kesalahan ketik spasi saat Anda bermaksud tanda hubung).
Karena tidak ada kelompok sorotan lain yang tampaknya terpengaruh, sesuatu seperti CursorLineNr
mungkin sedang diterapkan, tetapi melihat melalui hi
daftar saya tidak melihat sesuatu yang sesuai.
Adakah yang tahu apa ini? Lebih baik lagi, apakah ada yang tahu cara untuk memodifikasi grup highlight untuk cursorline?
sumber
Jawaban:
Saya sudah berjuang dengan perilaku itu untuk waktu yang lama .
Pada dasarnya, warna latar depan
SpecialKey
pada garis saat ini diubah ke warna latar depanNormal
jika:cursorline
pilihan ini diaktifkan,CursorLine
kelompok sorot memiliki satu set warna latar belakang.Saya tidak pernah bisa memperbaiki perilaku itu, tidak peduli apa yang saya coba. Masalahnya terletak di suatu tempat di kode sumber Vim.
sumber
~
yang sedikit kurang membingungkan (mungkin juga mencari beberapa unicode char yang tidak jelas untuk digunakan).none
), mencoba untuk meninggalkan nilai default (digarisbawahi), spasi masih mengubah warna latar depan merekaApa yang berhasil untuk saya adalah baris berikut dalam saya
.vimrc
(berdasarkan jawaban Igor Mikushkin ).VimEnter
hanya berfungsi untuk file pertama yang Anda buka, bukan untuk file / tab yang Anda buka sesudahnya.BufNewFile,BufRead
sejauh ini telah bekerja untuk semua buffer yang saya buka.Baris pertama mencakup karakter spasi putih. Vim menyoroti mereka dalam
SpecialKey
grup, jadi kami menerapkan gaya itu kepada mereka.Baris kedua mencakup baris baru. Vim menyoroti mereka dalam
NonText
grup, jadi kami menerapkan gaya itu kepada mereka. Anda hanya benar-benar membutuhkan baris kedua jikaNonText
karakter Anda disorot berbeda dariSpecialKey
karakter.sumber
Baris berikut di .vimrc memperbaiki masalah untuk saya.
Ini mengesampingkan aplikasi gaya lain untuk tab dan spasi tambahan di dalam garis kursor.
sumber
matchadd()
hasilnya dalam variabel, jika Anda tidak menggunakannya?Masih ada "solusi" lain, sebenarnya semacam kludge untuk masalah ini.
Saya memiliki grup sintaks khusus untuk "listchars".
Seperti ini:
Anda dapat melakukan sesuatu seperti ini (meskipun saya tidak mengujinya):
Tetapi setidaknya ada dua masalah dengan pendekatan ini:
Untuk memperbaikinya saya memiliki fungsi-fungsi khusus seperti:
untuk setiap grup sintaks, yang sering saya gunakan, untuk memperbaiki sorotan secara manual. Anda dapat melakukan ini dengan cara lain seperti perintah otomatis atau secara manual mengatur nilai untuk opsi sintaks. Untuk membuat sintaks ulang bekerja, Anda juga harus memiliki ini:
di setiap file sintaks yang sesuai, seperti
~/.vim/after/syntax/javascript.vim
let g:indentLine_newVersion = 0
, di mana plugin bekerja secara normal.Tetapi dengan cara lain pendekatan ini bekerja secara normal tanpa plugin IndentLine:
Dan dapat diterima dengan itu:
sumber