Подсветка слов в 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) когда в текущем окне отображается другой буфер (затем очищаются блики), и, возможно, также в другом окне, отображающем тот же буфер, что и текущий.