Подтвердить что ты не робот

Выделить текущий результат поиска в vim

В emacs, когда вы выполняете поиск, будет один цвет подсветки для всех вхождений в буфере и еще один цвет для того, что ваш курсор будет включен. Мне было интересно, знал ли кто-нибудь о подобном поведении в vim, плагине vim или даже о некоторых идеях о том, как выполнить это сам в vimscript.

(заметьте, я уже знаю о hl-IncSearch, который близок, но не то, что я ищу)

4b9b3361

Ответ 1

Насколько я знаю, нет встроенного способа делать то, что вы хотите.

Если бы я попытался реализовать его сам... Ну, один из способов сделать это - переопределить *, n и p и объединить его с чем-то вроде эта функция:

noremap n n:call HighlightNearCursor()<CR>
noremap p p:call HighlightNearCursor()<CR>
noremap * *:call HighlightNearCursor()<CR>

function HighlightNearCursor()
  if !exists("s:highlightcursor")
    match Todo /\k*\%#\k*/
    let s:highlightcursor=1
  else
    match None
    unlet s:highlightcursor
  endif
endfunction

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

РЕДАКТИРОВАТЬ: Вам, вероятно, придется установить некоторые пользовательские цвета выделения. Эта страница vimwiki дает некоторую информацию об этом, хотя я помню, что где-то был пример для примера.

ИЗМЕНИТЬ СНОВА: Возможно, более чистым решением будет использование Mark.vim в сочетании с первой техникой. Тогда все это сводится к чему-то вроде:

noremap n \nn\m
noremap p \np\m
noremap * \n*\m

Ответ 2

Похоже, вы хотите выделить все результаты в буфере. Вы можете сказать

:set hls

Что будет включено hlsearch. Тогда вы можете сказать

:set nohls  # turn off permanently
:noh        # turn off until next time you search.

Вы также можете найти/выделить слово под курсором с помощью * (вперед) или # (назад).

Ответ 3

У меня нет реального ответа, но простой способ получить, возможно, 75% того, что вы хотите, это просто изменить выделение курсора. Серый блок курсора по умолчанию не очень хорошо контрастирует с желтым цветом по умолчанию для поиска. Поэтому просто измените выделение курсора на (a), что контрастирует больше с желтым, и (2) также контрастирует с другими цветами в вашей цветовой гамме. Для меня что-то вроде этого работает очень хорошо:

highlight Cursor guifg=green guibg=red

Для меня мигающий красный курсор на первой букве текущего поиска подходит довольно хорошо. Это не так хорошо, как полномасштабное решение, но оно просто мертвое. (Я предполагаю, что он работает так же хорошо и в терминале Vim, если вы добавите эти элементы в команду highlight, но не протестировали его там.)