Я пытаюсь следовать за instructions on the Vim wiki, чтобы получить плагин matchit, работающий с файлами ColdFusion (* .cfm), содержащий как теги ColdFusion, так и HTML, работающие на MacVim.Как получить плагин VIM matchit, работающий с ColdFusion и HTML?
У меня есть файл синтаксиса для ColdFusion (cf.vim), установленный в $ HOME/.vim/syntax/cf.vim, последняя версия соответствия, установленная в .vim/plugin/matchit.vim, и я «ве добавили следующий блок до конца конца matchit.vim:
au FileType html,jsp,php,cf if !exists("b:match_words") |
Я также добавил следующую строку к концу моего $ HOME/.vimrc файл:
filetype plugin on
Наконец Я добавил предложенный блок в конец cf.vim:
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
if exists("loaded_matchit")
let b:match_words = '<cfif\>.\{-}>\|<cfif\>.\{-}$:'
\ . '<cfelseif\>.\{-}>\|<cfelseif\>.\{-}$:'
\ . '<cfelse\>.\{-}>\|<cfelse\>.\{-}$:'
\ . '<\/cfif>,'
\ . '<cfloop\>.\{-}>\|<cfloop\>.\{-}$:'
\ . '<\/cfloop\>.\{-}>,'
\ . '<cfoutput\>.\{-}>\|<cfoutput\>.\{-}$:'
\ . '<\/cfoutput\>.\{-}>,'
\ . '<cftimer\>.\{-}>\|<cftimer\>.\{-}$:'
\ . '<\/cftimer\>.\{-}>,'
\ . '<!---:--->,'
\ . '<cfquery\>.\{-}>\|<cfquery\>.\{-}$:<\/cfquery\>.\{-}>,'
\ . '<cfscript>:<\/cfscript>'
" Since we are counting things outside of comments only,
" It is important we account comments accurately or match_words
" will be wrong and therefore useless
syntax sync fromstart
endif " exists("loaded_matchit")
Однако, когда я нажимаю клавишу%, чтобы перейти к соответствующему тегу, она работает только наполовину, основываясь на расширении файла. Если файл имеет расширение .cfm, я могу перейти с <cfif>
на </cfif>
, но не на <body>
на </body>
. Ситуация отменяется, если расширение является .html.
Однако, глядя на код cf.vim оказывается, что он должен работать с ColdFusion и HTML-тегов, смешанных в одном файле:
" Inherit syntax rules from the standard HTML syntax file
if version < 600
source <sfile>:p:h/html.vim
else
runtime! syntax/html.vim
endif
На связанной ноте я добавил:
let b:match_ignorecase = 1
- $ HOME/.vimrc, чтобы отключить чувствительность к регистру, как указано в документации, но она по-прежнему работает только с cfif, а не с CFIF.