Edytuję dużo kodu PHP w Vimie i wpadłem w kłopoty z kilkoma makrami w sobie .vimrc
.
Obecnie używam tych dwóch makr do komentowania / usuwania komentarzy w stylu 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
I tych dwóch do komentowania / odkomentowania w stylu 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
Te makra działają dobrze, gdy są stosowane do zamierzonego typu pliku, ale ponieważ w pliku PHP często osadzony jest HTML, styl komentowania PHP jest bezużyteczny.
Czy istnieje sposób, aby Vim wykrył, czy działa na kawałku kodu HTML w pliku PHP, a następnie zastosował prawidłowe zachowanie związane z komentowaniem?
Edycja: Wiem, że mogę ręcznie ustawić typ pliku i że są do tego dostępne wtyczki, chciałem dowiedzieć się więcej o pisaniu lepszych makr.