Выделение критерия поиска, не перемещая курсор

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

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

15
задан 16.09.2014, 22:54

4 ответа

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

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

Моя благодарность переходит к 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>
15
ответ дан 07.12.2019, 11:01

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

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

:set hlsearch

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

:let @/="variable"

Это выделит все случаи переменной, не переходя к следующему соответствию.

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

13
ответ дан 07.12.2019, 11:01

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

:match Question '^R^W'

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

:hi

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

:help c_CTRL-R_CTRL-W

для больше на этом. Посмотрите

:help :match

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

:match

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

7
ответ дан 07.12.2019, 11:01

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

 :set hlsearch

Можно хотеть:

 : set noincsearch
1
ответ дан 07.12.2019, 11:01

Теги

Похожие вопросы