# vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 31 2015 23:36:07)
# cat /root/.vimrc
map <F2> :w\|!sh % <cr>
map <F3> :w\|!bash % <cr>
map <F4> :w\|!python % <cr>
map <F5> :w\|!python % &<cr>
highlight RedundantWhitespace ctermbg=DarkBlue guibg=red
match RedundantWhitespace /\s\+$\|\t/
syntax on
highlight Comment ctermfg=green
Saya mulai mengedit contoh grafik htm:
# vi /var/www/js/highcharts/examples/dynamic-master-detail/index.htm
Saya menavigasi melalui kode dan aku hanya menggunakan tombol panah dan Home, Page Up, Page Down, dan Endkunci.
Setelah 2 menit, gangguan visual ini terjadi; setengah layar di bawah kursor saya kehilangan sorotan sintaks dan menjadi satu warna. Jika saya menekan Page Downatau Page Up, penyorotan sintaks dikembalikan.
Kode html apa pun dengan javascript di dalamnya terpengaruh.
minlines
pengaturan untuk penyorotan sintaksis saat ini membantu? Yaitu,:syn sync minlines=800
(sesuaikan sesuai kebutuhan).Jawaban:
Ini bisa menjadi masalah dengan sistem vim untuk mengenali dan kemudian menyoroti "kata kunci" sintaksis yang tidak mendapatkan konteks yang cukup untuk mengenali kata kunci.
Konsep dasar sistem sintaksis vim (menemukan dan menandai elemen sintaks dasar) dijelaskan dalam
:h usr_44
Pada dasarnya vim menggunakan regex untuk mengenali elemen sintaksis dalam file, setelah ini diidentifikasi, kemudian menyoroti aturan diterapkan untuk mewarnai konstruksi kode tersebut, (yaitu untuk melakukan "menyoroti sintaks"), tetapi seperti yang dijelaskan dalam
:h 44.10
vim tidak mulai parsing dari di awal file, file ini mulai beberapa baris (mis. 10 atau 100 baris) ke atas dari atas viewport Anda saat ini.Jika konstruksi sintaksis, misalnya tag HTML pembuka atau definisi fungsi dll. Mulai lebih tinggi daripada titik vim mulai parsing, vim sintaks regex terputus.
Biasanya untuk memperbaiki ini, Anda meningkatkan titik bahwa vim mulai parsing.
Untuk mengetahui berapa banyak baris di atas baris atas viewport vim yang mulai digunakan parsing:
Ini adalah output saya ketika melihat file HTML:
jika saya memiliki masalah dengan sinkronisasi - hanya untuk file itu - saya akan menambah minlines dengan
Jika Anda berulang kali mendapatkan masalah ini, memperbaikinya sedikit lebih sulit. Ini karena nilai sinkronisasi sering diatur dalam file sintaks yang didedikasikan untuk tipe file yang Anda edit, misalnya untuk saya
syntax sync minlines
untuk tipe file html diatur dalam file sintakssintaks parsing dan nilai konfigurasi untuk file css ada di
shell dalam
sh.vim
dan sebagainya.Script sintaks ini hanya dijalankan pada saat Anda membuka file dari jenis
foo.css
,bar.html
,baz.sh
dll, sehingga pengaturan garis di vimrc Anda akan tidak bekerja karena script ini akan meniup pengaturan Anda pergi, salah satu solusi adalah dengan menggunakan autocmd yang memicu ketika Anda masukkan filesumber
Saya mendapatkan ini dengan
CMakeList.txt
file. Ini adalah bagian dari mekanisme highlight sintaksis. Saya juga mendapatkannya di "long" (beberapa halaman sebenarnya) HTML di mana saya punyaJavaScript
kode. Untuk ini, saya menggunakan perintah berikut:Dan dalam banyak kasus itu menyelesaikan masalah.
Perhatikan bahwa perintah ini akan membuat vim menjadi sangat lambat jika Anda mengedit file yang sangat besar. Dalam kebanyakan kasus, bagi saya "kelambatan" lebih dari cukup.
sumber