Я пытаюсь выделить в Vim второй цвет, Самый простой способ сделать это - использовать команды :match, :2match или :3match:

:match TODO /pattern/

TODO - группа выделения; шаблон будет выделен как ':/'.

Мне сложно понять, как удалить цвет.

vim
4
Aron Lee 13 Сен 2018 в 01:07

2 ответа

Лучший ответ

Вы можете отменить команду :match TODO /pattern/ с помощью :match none или просто :match. То же самое для других вариантов :2match и :3match.

Общая функция matchdelete() обычно используется в сценариях для отмены совпадения, добавленного через :matchadd(). Поскольку вы используете эти команды в интерактивном режиме (для ограниченного набора совпадений), я бы не советовал вам переключаться на них.

4
Ingo Karkat 13 Сен 2018 в 06:56

Насколько мне известно, для этого нет команды, но вы можете использовать clearmatches() и {{X1 }} функций.

clearmatches() удалит все совпадения:

:call clearmatches()

И matchdelete(), чтобы удалить конкретный экземпляр соответствия; вы можете получить идентификатор из getmatches():

:for m in filter(getmatches(), { i, v -> l:v.group is? 'TODO' })
:  call matchdelete(m.id)
:endfor

Вы также можете фильтровать совпадения, например, соответствующий шаблон с помощью клавиши pattern. Команда :Unmatch может выглядеть так:

command! -nargs=1 Unmatch
    \  for m in filter(getmatches(), { i, v -> l:v.group is? <q-args> })
    \|     call matchdelete(m.id)
    \| endfor
3
Martin Tournoij 13 Сен 2018 в 00:17