Saya mengedit banyak kode PHP dengan Vim, dan saya mengalami hambatan dengan beberapa makro di komputer saya .vimrc
.
Saat ini saya menggunakan dua makro ini untuk berkomentar / batalkan komentar dalam gaya-C
"c-style (//) comment (press the [.] key)
au FileType php vnoremap . :s/^\(\s*\)\(.\+\)$/\1\/\/\2/<CR>:noh<CR>gv
"c-style (//) uncomment (press the [,] key)
au FileType php vnoremap , :s/^\(\s*\)\/\//\1/<CR>:noh<CR>gv
Dan keduanya memberi komentar / tanda komentar dalam gaya HTML
"html-style (<!-- -->) comment (press the [.] key)
au FileType html vnoremap . :s/^\(\s*\)\(.\+\)$/\1<!-- \2 -->/g<CR>:noh<CR>gv
"html-style (<!-- -->) uncomment (press the [,] key)
au FileType html vnoremap , :s/^\(\s*\)<!-- \(.*\) -->/\1\2/g<CR>:noh<CR>gv
Makro ini berfungsi dengan baik bila diterapkan pada tipe file yang dimaksudkan, tetapi karena sering ada HTML yang tertanam di dalam file PHP, gaya berkomentar PHP tidak berguna.
Apakah ada cara bagi Vim untuk mendeteksi jika itu bekerja pada sepotong kode HTML di dalam file PHP, dan kemudian menerapkan perilaku berkomentar yang benar?
Sunting: Saya tahu bahwa saya dapat secara manual mengatur filetype, dan bahwa ada plugins yang tersedia untuk ini, saya ingin belajar lebih banyak tentang cara menulis makro yang lebih baik.