11

Используя Vim, я иногда обнаруживаю, что некоторое время смотрю на раздел исходного кода, и вдруг хочу, чтобы какая-то переменная появилась на экране. Это просто: /<var> который выделяет их все. Моя проблема в том, что чаще всего поиск сдвигает мое окно, поэтому я не смотрю на исходный код из того же места. Даже если он сдвинулся всего на несколько строк, он все равно меня отбрасывает, поскольку мне нужно несколько секунд, чтобы выяснить, куда все переместилось.

Можно ли выделить критерий поиска, не перемещая курсор к следующему совпадению?

5 ответов5

13

Ответ Skyblue показывает суть идеи о том, как использовать обычную подсветку поиска, чтобы выполнить то, что вы хотите.

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

Я благодарю garyjohn за то, что он указал на 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>
11

Вы также можете установить регистр поиска для переменной, которую вы хотите сопоставить.

Во-первых, убедитесь, что подсветка поиска включена:

:set hlsearch

Затем вы можете установить регистр поиска с помощью:

:let @/="variable"

Это будет подсвечивать все вхождения переменной без перехода к следующему совпадению.

Для получения дополнительной информации см . :help @/

6

Одним из способов является использование команды :match , например,

:match Question '^R^W'

Это выделит слово под курсором с помощью группы «Подсветка вопроса». Я часто использую группу Вопросов, потому что на моем терминале это хороший зеленый. Чтобы увидеть доступные группы подсветки, выполните

:hi

^R и ^W - это Ctrl-R и Ctrl-W, соответственно, и заменяются словом под курсором. Увидеть

:help c_CTRL-R_CTRL-W

подробнее об этом. Увидеть

:help :match

больше о команде :match . Чтобы очистить выделение, просто выполните

:match

без аргументов.

1

В дополнение к:

 :set hlsearch

Вы можете захотеть:

 : set noincsearch
1

http://vim.wikia.com/wiki/VimTip1572

Если вы использовали этот плагин, вы можете просто включить функциональность

\ м

затем используйте клавишу NumPad, чтобы назначить цвет этому слову повсюду, не перемещая курсор.

1

Вы можете использовать много разных основных моментов одновременно для множества разных слов или более сложных шаблонов поиска, если хотите.

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