1

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

Это возможно в здравом смысле?

4 ответа4

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

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

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

0

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

В качестве быстрого примера, здесь приведен пример привязки ключа к 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

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

0

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

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

см. mark.vim.

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