11

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

<!-- Question: bla bla -->

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

Обновить

Я попытался поместить это в мой .vimrc но это не имело никакого эффекта:

syn keyword JakeAnnotation      Question

hi JakeAnnotation gui=bold term=bold cterm=bold

Обновление 2

На самом деле я вижу, что то, что я делал раньше, имело некоторый эффект, потому что, когда я делаю это:

: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 ответов6

8

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

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

:highlight MyQuestions guifg=red guibg=green

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

:syntax match MyQuestions /Question/

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

:syntax match MyQuestions /.*Question.*/

5

Файл, который вы ищете, является файлом «синтаксиса». Попробуйте поискать в /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]

2

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

2

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

:set hlsearch

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

1

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

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

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

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

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

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

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

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


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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .