Bagaimana saya bisa membuat perintah penyorotan di .vimrc segera berlaku dengan Vim 7.4?

9

Saya memiliki beberapa highlightperintah di .vimrcfile saya . Dalam Vim 7.3, ini mulai berlaku segera setelah Vim dimulai. Setelah memperbarui ke Vim 7.4, ini bukan masalahnya lagi. Vim awalnya menggunakan penyorotan default. Ketika saya memuat .vimrckedua kalinya dengan mengeksekusi source ~/.vimrc, menyoroti berfungsi seperti yang saya inginkan.

Anda harus dapat mereproduksi masalah ini menggunakan langkah-langkah berikut:

  1. Buat salinan .vimrcfile Anda .

  2. Ganti ~/.vimrcdengan file yang hanya berisi baris highlight Type ctermfg=28 cterm=bold.

  3. Jalankan vim dummy.cdi terminal 256 warna (misalnya Terminal GNOME).

  4. Ketikkan intke buffer. The intharus muncul dalam font reguler dan berwarna hijau muda, yang tidak apa yang saya inginkan.

  5. Masukkan :source ~/.vimrc. Sekarang intharus muncul dalam huruf tebal dan berwarna hijau tua.

Menurut artikel Cara mengontrol / mengkonfigurasi warna vim , tidak apa-apa untuk hanya menempatkan highlightperintah ke dalamnya .vimrc. Artikel itu mengatakan bahwa Anda harus meletakkan syntax enablesetelah highlightperintah, tetapi ini tidak ada bedanya.

Fix pertama saya adalah untuk tambahkan setiap highlightperintah dalam .vimrcdengan autocmd VimEnter *. Ini berfungsi untuk beberapa jenis file, tetapi tidak untuk yang lain (file C adalah contoh).

Apa alasan perilaku ini? Bagaimana saya bisa menjalankan highlightperintah ketika Vim dimulai sehingga mereka berlaku untuk semua buffer selama seluruh sesi Vim?

Wolfgang Jeltsch
sumber
Kedengarannya seperti masalah 542
Christian Brabandt
Ya, saat menambahkan set compatibledi awal .vimrc, penyorotan sintaks berfungsi seperti yang diharapkan. Jadi sepertinya ini benar-benar bug yang sedang beraksi.
Wolfgang Jeltsch
Saya telah mendahului highlightperintah dengan autocmd ColorScheme *, yang diusulkan sebagai solusi dalam laporan bug. Itu masih tidak berfungsi. ☹
Wolfgang Jeltsch
Saya sekarang sedang menulis skema warna saya sendiri, yang ternyata juga mengatasi bug ini.
Wolfgang Jeltsch
Christian, bisakah Anda menuliskan komentar Anda sebagai jawaban? Bagaimanapun, ini adalah jawaban yang tepat untuk masalah saya. Atau apakah ada pendekatan lain untuk menangani pertanyaan yang benar-benar mengungkapkan bug?
Wolfgang Jeltsch

Jawaban:

5

Ini bukan jawaban yang pasti dan masalah Anda terdengar seperti masalah 542 . Tampaknya Anda dapat mengatasinya, dengan menulis skema warna dasar Anda sendiri, alih-alih menulis hi ...pernyataan itu langsung ke .vimrc Anda.

Christian Brabandt
sumber
Saya pikir itu karena masalah Vim ini; jadi jawaban Anda sepertinya jawaban yang tepat untuk masalah saya.
Wolfgang Jeltsch
3

Sebenarnya Anda tidak harus menempatkan highlight khusus Anda di vimrc Anda tetapi dalam file sintaks bea cukai.

File-file ini harus ditempatkan di ~/.vim/after/syntax/filetype.vimtempat filetypetipe file yang diharapkan. Jika Anda sebagian besar puas dengan file sintaks tetapi ingin menambahkan beberapa perintah, Anda dapat mengikuti langkah-langkah ini (diambil dari :h mysyntaxfile-add):

  1. Buat direktori di sana yang disebut "after / syntax". Untuk Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Tulis skrip Vim yang berisi perintah yang ingin Anda gunakan. Misalnya, untuk mengubah warna untuk sintaks C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Tulis file itu di direktori "after / syntax". Gunakan nama sintaks, dengan ".vim" ditambahkan. Untuk sintaks C kami:

    :w ~/.vim/after/syntax/c.vim
    

Itu dia. Lain kali Anda mengedit file C warna Komentar akan berbeda. Anda bahkan tidak perlu me-restart Vim.

:h mysyntaxfileadalah tempat yang baik untuk mendapatkan informasi tentang cara memperbaiki file sintaks Anda sendiri. Pelajari juga Vimscript The Hard Way karena beberapa bab mengenai topik ini.

statox
sumber
2
Bagaimana jika saya ingin mengubah penyorotan untuk semua jenis file. Sebagai contoh, saya ingin warna komentar menjadi biru tua, apa pun jenis filenya.
Wolfgang Jeltsch
Saya mencoba kurang lebih pendekatan yang Anda sarankan. Saya menambahkan file .vimrc/highlighting.vim, membuat direktori .vimrc/syntax/afterdan menambahkan beberapa tautan simbolik dari bentuk * filetype * .vimyang mengarah ke .vimrc/highlighting.vimdirektori ini. Penyorotan sintaks masih tidak berfungsi.
Wolfgang Jeltsch
@ WolfgangJeltsch Yup sebagai posting saya dan dokter mengatakan direktori ~/.vim/after/syntaxtidak boleh~/.vimrc
statox
Itu benar. Namun, ini hanya salah ketik dalam komentar saya. Sebenarnya, saya bekerja di direktori .vimdan penyorotan sintaks tidak berfungsi, mungkin karena bug ini 542.
Wolfgang Jeltsch
nggak! tidak bekerja
Yar
1

Untuk apa nilainya, saya punya masalah dengan MacVim (8.1.950 (155)) ini. Menempatkan pernyataan sorotan setelah colorschemedi .vimrc memperbaikinya untuk saya. Misalnya:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Halil Özgür
sumber