Учитывая список слов, я хочу выделить все эти слова в текущем буфере. Я пишу плагин 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.