Подсветка слов в vim (плагин)

Учитывая список слов, я хочу выделить все эти слова в текущем буфере. Я пишу Vim плагин, поэтому я ожидаю немного бритья.

Это возможно нормальным способом?

4 ответа

highlight LOL ctermbg=red
call matchadd("LOL", "this")
call matchadd("LOL", "little")
call matchadd("LOL", "light")
call matchadd("LOL", "of")
call matchadd("LOL", "mine")

Для плагина, который позволяет вам

  • выделите слово под курсором
  • выделите шаблон, указанный в командной строке
  • дать каждому новому образцу новый цвет
  • увидеть текущие выделенные узоры
  • прекратить выделять шаблон

см. mark.vim.

Да, это очень легко выделить несколько поисковых терминов, и вполне разумно, как описано ниже.

В качестве быстрого примера приведем пример привязки ключа к F8 выделить все вхождения слова под курсором в текущем буфере из пункта " Выделить все совпадения шаблона поиска" - Vim Tips Wiki (просто введите :set hls включить поисковую подсветку, чтобы сократить до погони):

:nnoremap <F8> :let @/='\<<C-R>=expand("<cword>")<CR>\>'<CR>:set hls<CR>

Итак, я нажимаю кнопку F8 в моем текущем буфере, сидя на слове read и вот что я получаю:

введите описание здесь

Расширение поиска по нескольким словам, взятым из шаблонов поиска - Vim Tips Wiki, Поиск того или иного, поиск слов, разделенных символом пробела, \|, как это:

/read\|execute\|readattr

И это то, что отображается:

введите описание здесь

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

Для быстрого и грязного, специального решения это различие, вероятно, не имеет большого значения, но для плагина вам нужно будет обработать (через :autocmd s) когда в текущем окне отображается другой буфер (затем очищаются блики), и, возможно, также в другом окне, отображающем тот же буфер, что и текущий.

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