Вопрос по – VIM: не подчеркивайте лидирующие пробелы в ссылках HTML [дубликаты]

8

Возможное дублирование:
Почему vim рисует подчеркивание на месте вкладок и как этого избежать?

При отступе кода PHP в VIM 7.0 в CentOS 5.x ссылки HTML отображаются подчеркнутыми. Это очень удобно, но в некоторых местах я вставил в этот HTML код PHP с отступом, и весь отступ подчеркнут:

<code>            <li class="picture">
________________<a href="<?=$linkUrl?>">
____________________<img src="/<?=$img['source']?>" alt="Picture"/>
____________________<? if ($someCondition): ?><span class="info"><?=$img['info']?></span><? endif; ?>
________________</a>
            </li>
</code>

Есть ли способ сказать синтаксической подсветке игнорировать пробелы в начале HTML-ссыло

Ваш Ответ

2   ответа
10

Мне удалось добиться этого путем изменения$VIMRUNTIME/syntax/html.vim. Сделайте копию на~/.vim/syntax/html.vim (.vim названvimfiles в Windows) и замените исходное определение синтаксиса

syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 [email protected],htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc

со следующим:

syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 keepend [email protected],htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLinkText,javaScript,@htmlPreproc
syn match htmlLinkText contained [email protected],htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLinkText,javaScript,@htmlPreproc "^\s*\zs.\{-}\ze\s*$"
syn match htmlLinkText contained [email protected],htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLinkText,javaScript,@htmlPreproc "\S.\{-}\ze\s*$"

Дальше вниз, меняй

HtmlHiLink htmlLink                    Underlined

К

HtmlHiLink htmlLinkText                Underlined

Voila! По сути, это вводит другую синтаксическую группуhtmlLinkText, который не соответствует начальным и конечным пробелам, и вместо этого применяет к нему выделение.

Ваши правки в порядке, и ваш файл работает для меня. Есть ли у вас какие-либо определения, может быть, в ~ / .vim / after / syntax / file? Ingo Karkat
@ dotancohen: Я думаю, что теперь я включил то, что вы назвали «теги H2 и P теперь выделены». Это можно исправить, добавив «keepend» в определение htmlLink; Я обновил свой ответ. Ingo Karkat
Нет, никаких других файлов или определений, я даже пробовал с пустым ~ / .vimrc (так что никакой другой общесистемный .vimrc не помешал бы). Это в терминале Cygwin SSHing в коробку CentOS 5.x, VIM 7.0. dotancohen
Спасибо. По какой-то причине, теперь ни одна из ссылок не выделена, а теги H2 и P выделены! Я внимательно изучил изменения, я не могу их найти. Правки находятся вокруг строк 150 и 25 если бы ты хотел посмотреть. Спасибо, Инго! dotancohen
Инго, спасибо, это именно то, что нужно! Это уменьшит реальную боль для глаз, спасибо. Я посмотрел на ваш сайт, и я подумал, что вам может быть интересно узнать, что Ханна на иврите означает «красивый». dotancohen
7

Ты можешь это сделать

:hi link htmlLink NONE
Спасибо, но это отключает все ссылки, которые я считаю полезными. Я хочу отключить выделение только в пробелах, начинающих строку. dotancohen

Похожие вопросы