
Используя Vim, я иногда ловлю себя на том, что смотрю на раздел исходного кода некоторое время и внезапно хочу, чтобы какая-то переменная на экране выскочила. Это просто: /<var>
это выделяет их все. Моя проблема в том, что чаще всего поиск сдвигает мое окно, так что я не смотрю на исходный код с того же места. Даже если он сдвигается всего на несколько строк, это все равно сбивает меня с толку, так как мне нужно потратить несколько секунд, чтобы понять, куда все переместилось.
Можно ли выделить поисковый запрос, не перемещая курсор к следующему совпадению?
решение1
http://vim.wikia.com/wiki/VimTip1572
Если вы использовали этот плагин, вы можете просто включить эту функцию
\м
затем используйте клавишу NumPad, чтобы назначить цвет этому слову везде, не перемещая курсор.
1
При желании вы можете использовать несколько различных вариантов выделения текста для разных слов или более сложные шаблоны поиска.
решение2
ответ skyblueпоказывает суть идеи того, как использовать обычную подсветку поиска для достижения желаемого.
Я расширил эту технику, создав сочетание клавиш, которое работает аналогично*
команда, но фактически не переходя к следующему матчу.
Моя благодарностьгариджонза указание наexpand()
эквивалентно *
выбору слов (чтобы избежать использования *
самого себя и восстановления представления). Это достаточно упрощает код, чтобы его можно было напрямую использовать в отображении (избегая использования функции). Я также добавил отображение, которое соответствует частичным словам (например, g*
).
:" The leader defaults to backslash, so (by default) this
:" maps \* and \g* (see :help Leader).
:" These work like * and g*, but do not move the cursor and always set hls.
:map <Leader>* :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>
:map <Leader>g* :let @/ = expand('<cword>')\|set hlsearch<C-M>
решение3
Вы также можете установить регистр поиска на переменную, которую вы хотите сопоставить.
Сначала убедитесь, что подсветка поиска включена:
:set hlsearch
Затем вы можете задать регистр поиска с помощью:
:let @/="variable"
Это позволит выделить все вхождения переменной без перехода к следующему совпадению.
Для получения более подробной информации см.:help @/
решение4
В дополнение к:
:set hlsearch
Возможно, вы захотите:
: set noincsearch