Используя Vim, я иногда уставился на раздел исходного кода некоторое время и внезапно хочу некоторую переменную на экране к всплывающему. Это легко: /<var>
который выделяет их всех. Моя проблема - то, что это, как правило, поиск смещает мое окно, таким образом, я не смотрю на исходный код от того же места. Даже если это только сместило несколько строк, это, все еще отбрасывает меня, так как я должен занять несколько секунд для выяснения, куда вещи переместились в.
Действительно ли возможно выделить критерий поиска, не перемещая курсор в следующее соответствие?
ответ лазурного показывает ядро идеи того, как использовать нормальный поиск, выделяющийся для выполнения то, что Вы хотите.
Я расширил ту технику путем создания привязки клавиш, которая работает так же к *
команда, но на самом деле не перемещаясь в следующее соответствие.
Моя благодарность переходит к 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>
Вы могли также установить поисковый регистр на переменную, которой Вы хотите соответствовать.
Во-первых, удостоверьтесь, что поисковое выделение включено:
:set hlsearch
Затем можно установить поисковый регистр с:
:let @/="variable"
Это выделит все случаи переменной, не переходя к следующему соответствию.
Для получения дополнительной информации посмотрите :help @/
Один путь состоит в том, чтобы использовать :match
команда, например,
:match Question '^R^W'
Это выделит слово под курсором с помощью группы выделения Вопроса. Я часто использую группу Вопроса, потому что на моем терминале это - хороший зеленый. Для наблюдения доступных групп выделения выполниться
:hi
^R
и ^W
Ctrl-R и Ctrl-W, соответственно, и заменяется словом под курсором. Посмотрите
:help c_CTRL-R_CTRL-W
для больше на этом. Посмотрите
:help :match
для больше на :match
команда. Для очистки того выделения просто выполнитесь
:match
без аргументов.