Modelines mungkin tampak seperti cara untuk melakukan ini, tetapi sayangnya mereka tidak akan berhasil. Modelines hanya opsi dukungan pengaturan ( shiftwidth
, colorcolumn
, hal semacam itu). Anda dapat menggunakan modeline like vim: spell
untuk mengaktifkan pemeriksaan ejaan untuk dokumen. Namun, spellgood!
adalah perintah Ex, bukan opsi. Selanjutnya, Anda secara khusus tidak dapat menetapkan beberapa opsi (termasuk spellfile
, lihat :help spellfile
) dari modeline untuk alasan keamanan.
Anda dapat membuat banyak autocommand khusus file di vimrc Anda, tetapi itu akan menjadi sangat sulit untuk dipertahankan dari waktu ke waktu, membosankan jika Anda memiliki dua file dengan nama yang sama di lokasi yang berbeda, dan tidak akan bepergian "dengan mengajukan."
Alih-alih, solusi terbaik mungkin adalah membangun fitur mirip modeline Anda sendiri untuk menambahkan kata-kata dengan menguraikan beberapa blok teks yang ditentukan dalam dokumen. Misalnya, Anda dapat mencari baris yang dimulai dengan "spellgood:"
dan secara otomatis menambahkan kumpulan kata yang dibatasi ruang setelah ke daftar kata internal:
function! AddLocalSpelling ()
" Save the cursor position.
let cursor_position = getcurpos()
let location = searchpos("\"spellgood:", "c")
while location != [0, 0]
let words = split(getline(location[0]))
" The first 'word' will be the sentinel token itself (unless)
" we found the token in an embedded string or comment...
if words[0] == "\"spellgood:"
call remove(words, 0)
for word in words
execute "silent spellgood! " . word
endfor
endif
let location = searchpos("\"spellgood:", "W")
endwhile
" Restore cursor position.
call setpos(".", cursor_position)
endfunction
Kemudian Anda dapat mengatur perintah otomatis untuk, katakan BufReadPost * call AddLocalSpelling()
di .vimrc
. Dalam praktiknya Anda mungkin ingin membuat fungsi di atas lebih kuat dalam menghadapi kesalahan, dan mungkin digunakan comments
untuk melihat apa token komentar yang valid (saya memilih "
karena saya menguji ini dalam buffer VimL). Jawaban SuperUser ini yang ditautkan oleh JJoao dalam komentar memberikan implementasi yang mirip tapi alternatif yang memungkinkan Anda menggunakan blok kata dan bukan hanya satu baris pada satu waktu.
Metode ini akan meminta orang lain menggunakan fungsi yang sama atau setidaknya menyetujui aturan parse yang sama, jadi itu tidak sempurna. Tetapi Anda dapat mengambilnya dan mempromosikan fungsionalitas ke sebuah plugin jika diinginkan, memungkinkan akses yang lebih mudah bagi pengguna lain.
modeline
?