Custom vim highlighting

I am editing some xml right now and I have been leaving myself some comments of things to come back to. Как это

<!-- Question: bla bla -->

I am editing with vim right now and I would like vim to highlight Question right now so that I can easily look through my code and find all the places I need to look at. I know I need to add something in my vimrc but I think that I might be searching for the wrong thing.

Обновить

I tried putting this in my .vimrc but it had no effect:

syn keyword JakeAnnotation      Question

hi JakeAnnotation gui=bold term=bold cterm=bold

Обновление 2

Actually I can see that what I did before had some effect because when I do this:

:hi

Он показывает мне все, что он выделяет, и одна из записей:

JakeAnnotation xxx term=bold cterm=bold ctermbg=6

(и ххх отформатирован правильно)

Это заставляет меня поверить, что я просто не правильно определяю Вопрос. Вопрос должен быть на линии сам по себе?

Обновление 3

Итак, для пользователя 22303 пост у меня это работает:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/

Однако я подозреваю, что вам разрешено иметь только одно совпадение на файл. Потому что, когда я делаю это:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/
highlight MyRelook cterm=bold term=bold ctermbg=blue ctermfg=black
match MyRelook /Another look/

Первый перестает работать. (Но второй работает).

6 ответов

Решение

Я думаю, что мы давали вам некоторые ответы, которые не совсем верны. Вот что можно попробовать, что я тестировал на своей машине.

Во-первых, создайте свою собственную новую группу подсветки:

:highlight MyQuestions guifg=red guibg=green

Теперь укажите, что группа выделения будет существовать всякий раз, когда сопоставляется шаблон:

:syntax match MyQuestions /Question/

Это должно начать отображать подсветку текста "Вопрос" в каждой строке, которая имеет этот текст. Чтобы развернуть, чтобы показать всю строку, вы бы изменили текст поиска, чтобы подстановочные знаки соответствовали всей строке, что-то вроде этого:

:syntax match MyQuestions /.*Question.*/

Файл, который вы ищете, является файлом "синтаксиса". Попробуйте посмотреть в /usr/local/share/vim/syntax/ или же /usr/share/vim/syntax/, Файл, который вы хотите, это xml.vim.

Самое простое, что нужно сделать, это найти строку, которая имеет

syn keyword xmlTodo         contained TODO FIXME XXX

и измените его на:

syn keyword xmlTodo         contained TODO FIXME XXX Question

Это добавит подсветку "Todo" к любому комментарию, содержащему текст Question,

Если вы собираетесь использовать это для (когда-либо), было бы лучше скопировать xml.vim в ваш локальный ~/.vim/syntax чтобы изменения в vim не перезаписывали ваш файл синтаксиса.

Обновить

Если вы хотите подобную (sortof) возможность в любом файле, я бы использовал команду 'goto'. Я признаю, что это похоже на hlsearch, который, как вы сказали, вас раздражает.

Во время редактирования, когда курсор находится на слове, введите gd искать с текущей точки в файле или gD искать с самого начала. Каждое слово в вашем файле, которое соответствует текущему слову, подсвечивается. Вы можете напечатать n перейти к следующему экземпляру этого слова.

Я склонен делать это, потому что вы получаете подсветку и навигацию с минимальным набором текста. Вы выключаете подсветку обычным способом: :noh[lsearch]

У вас есть несколько вариантов.
- один, как упоминал Доминик... вы можете искать их по одному (не очень практично)
- два, вы можете сделать ": g / <- Question", чтобы получить "список" их всех (немного лучше, дает общую картину)
- три, вы можете создать группу выделения, если вы используете только такие комментарии в файлах XML (я не знаю, как выглядит XML, поэтому я не знаю, есть ли в них какие-то другие комментарии). также). Это было бы хорошо, если бы вы установили его в vimrc, поскольку при обновлении vim более новой версией ваш файл xlm.vim исчезнет.

Вы могли бы просто сделать

:set hlsearch

А потом искать вопрос

Вам не обязательно помещать команду в ваш vimrc. Вы всегда можете просто ввести его в командной строке, а затем очистить, когда больше не хотите выделять. Команды будут примерно такими:

: привет Вопрос guifg= красный guibg= синий gui= жирный

В gvim (т. Е. Vim с графическим интерфейсом), который будет устанавливать передний план (guifg), фон и общие настройки персонажа.

если вы хотите избавиться от этого выделения, сделайте следующее:

: hi Вопрос ясен

Используя vim внутри терминала, вы можете изменить эту команду:

: привет Вопрос ctermfg= красный ctermbg= синий термин = жирный

Конечно, вы можете поместить любой из них в свой vimrc, а также можете объединить флаги gui и term в одну команду hi.


[ниже добавлено после того, как я прочитал ответ другого автора]

Извините, я предполагал, что синтаксис ваших строк вопросов уже соответствует настройкам вашего файла синтаксиса для встроенного тега Vim для выделения вопросов. Просто посмотрите на другой ответ, в котором упоминается файл синтаксиса xml для vim, и затем вы можете выполнить команды выше, используя группу выделения ToDo вместо Question.

Я опаздываю на вечеринку, но я использую TODO а также FIXME именно для этой ситуации.

Большинство, если не все, цветовые схемы выделят TODO в следующем примере с некоторой комбинацией цвета фона, подчеркивания и курсива:

<tree>
  <!--TODO : do I have to add a trunk tag ?-->
  <branch>
    <leaf>caterpillar</leaf>
    <leaf>caterpillar</leaf>
  </branch>
</tree>

Это не совсем подходит семантически, но работает очень хорошо с чисто функциональной точки зрения.

Другие вопросы по тегам