Учитывая список слов, я хочу выделить все эти слова в текущем буфере. Я пишу плагин VIM, поэтому я ожидаю немного бритья.
Это возможно в здравом смысле?
Учитывая список слов, я хочу выделить все эти слова в текущем буфере. Я пишу плагин VIM, поэтому я ожидаю немного бритья.
Это возможно в здравом смысле?
highlight LOL ctermbg=red
call matchadd("LOL", "this")
call matchadd("LOL", "little")
call matchadd("LOL", "light")
call matchadd("LOL", "of")
call matchadd("LOL", "mine")
Добавление пользовательских подсветок (без влияния на текущий шаблон поиска) легко с помощью matchadd() / matchdelete() . Проблема в текущем требовании буфера , потому что эти функции являются локальными для окна .
Для быстрого и грязного, специального решения эта разница, вероятно, не имеет большого значения, но для плагина вам нужно будет обработать (через :autocmd s), когда в текущем окне отображается другой буфер (затем очистить блики ) и, возможно, также другое окно, отображающее тот же буфер, что и текущий.
Да, это очень легко выделить несколько поисковых терминов, и вполне разумно, как описано ниже.
В качестве быстрого примера, здесь приведен пример привязки ключа к 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
И это то, что отображается:

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