Vim, cara memuat ulang penyorotan sintaks

87

Ketika saya menjalankan Rmodel, Rcontroller dan lainnya di Vim. Saya hanya melihat teks putih. Tapi ketika saya pergi ke buffer berikutnya dan kemudian kembali ke :bndan :bl, warna berfungsi.

Ini adalah folder .vim saya https://github.com/regedarek/dotvim

tomekfranek.dll
sumber

Jawaban:

97

Menggunakan :syntax sync fromstart

Saya mendapat tip itu dari http://vim.wikia.com/wiki/Fix_syntax_highlighting

Artikel itu juga menyarankan membuat pemetaan untuk perintah itu, misalnya untuk memetakan F12:

noremap <F12> <Esc>:syntax sync fromstart<CR>
inoremap <F12> <C-o>:syntax sync fromstart<CR>
Mike Lippert
sumber
Ini berfungsi, tetapi menghapus garis bawah untuk pemeriksaan ejaan. Adakah cara untuk mencegahnya?
Alec Jacobson
1
Maaf saya tidak tahu Saya tidak punya apa-apa untuk melakukan pemeriksaan ejaan. Ini mungkin tergantung pada addon khusus Anda. Jika tidak ada orang lain yang menjawab, mungkin ada gunanya membuat pertanyaan dengan semua informasi yang relevan.
Mike Lippert
3
Saya akhirnya menggunakan autocmd BufEnter,InsertLeave * :syntax sync fromstartuntuk memaksa sinkronisasi sintaks setelah saya memasukkan buffer. Sinkronisasi sintaks juga dipicu saat ada InsertLeaveperistiwa yang terjadi.
Samuel Li
Mungkin seseorang akan menganggap ini berguna suatu hari nanti. Gunakan filetype=shatau syntax=shuntuk pesta dan suka, tidak bash. Butuh waktu bagi saya untuk memikirkan yang satu itu.
quapka
Saya menggunakan :do Syntaxpadanan :doautocmd Syntaxyang hanya sedikit lebih pendek sehingga Anda tidak perlu mengikatnya (setidaknya saya tidak perlu memanggil perintah ini sesering itu jadi saya hanya mengetiknya). Saya kebanyakan menggunakannya di beberapa file yang berisi regex yang menyebabkan sorotan sintaks terputus ketika saya membuka file melalui netrw.
Rens Tillmann
54

Mencoba:

:e

Jika Anda tidak memiliki perubahan yang belum disimpan ke file.

Atau:

:syn off | syn on
Holygeek
sumber
Buat pemetaan untuk mengurangi rasa sakit, sesuatu sepertinmap <F6> :Rmodel|e<CR>
holygeek
2
Tampaknya harus ada beberapa perintah bawaan untuk menyegarkan penyorotan sintaks. Hal lain yang tampaknya berfungsi adalah melompat ke bagian lain dari file, seperti awal atau akhir, dan melompat kembali, misalnya:gg``
Keith Pinson
2
": syntax sync fromstart" (tanpa tanda kutip) tidak memuat ulang penyorotan sintaks tipe file pada file yang terkadang tidak menunjukkan pewarnaan sintaks - masalah yang sedang berlangsung bagi saya dan Vim, untuk beberapa alasan. Namun, ": syn off | syn on" segera berfungsi. ": e!" juga akan menyelesaikan pemuatan ulang itu, tetapi waspadalah: perubahan yang belum disimpan ke file Anda akan hilang!
Victoria Stuart
:syn off | syn onmengubah
skema warna
12

Mencoba semua hal di atas - tidak ada yang berhasil untuk saya.

Satu-satunya hal yang berhasil adalah: :filetype detect jadi saya memetakan ulang pintasan cepat :noremap <Leader>,ftd :filetype detect

JESii
sumber
9

Terkadang sintaksnya OK, tetapi yang rusak hanyalah lipatan. Dalam hal itu sangat zxmembantu.

Dari dokumentasi VIM:

zx

Perbarui lipatan: Membatalkan lipatan yang dibuka dan ditutup secara manual: terapkan kembali 'tingkat lipatan', lalu lakukan "zv": Lihat garis kursor. Juga memaksa menghitung ulang lipatan. Ini berguna saat menggunakan 'foldexpr' dan penyangga diubah sedemikian rupa sehingga lipatan tidak diperbarui dengan benar.

Wormer
sumber
5

Pilihan lainnya adalah:

doautocmd Syntax
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
sumber
1
fwiw, ini adalah satu-satunya jawaban yang memperbaiki sintaksis ketika saya memiliki masalah ini ( syntax sync fromstarttidak melakukan apa pun, atau melakukan apa pun!)
TJ Ellis
1
Versi yang lebih pendek adalah:do Syntax
Rens Tillmann
-1

Mencoba:

:Rrefresh!

Perintah ini menyegarkan pengaturan cache tertentu dan juga memuat ulang rails.vim .
Ini membantu saya menyegarkan penyorotan sintaks di Rails.

zenbro
sumber
Ini hanya berlaku untuk rails.vimdan bukan solusi umum. Tanpa plugin itu, perintah ini tidak ada.
wchargin
-1

Anda juga dapat mencoba:

CTRL-L

Dari dokumen VIM ( :h CTRL-L):

Hapus dan gambar ulang layar. Gambar ulang dapat terjadi nanti, setelah memproses kepala jenis.

Yordania
sumber
Ctrl-L menyegarkan layar. Tidak ada bedanya jika Anda membuat perubahan pada file sintaks yang sesuai.
Alexis Wilke