В Vim есть ли способ вставить текст в строку поиска?


105

Я хочу найти $maximumTotalAllowedAfterFinishи заменить его на $minimumTotalAllowedAfterFinish. Вместо того, чтобы вводить длинный текст:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Есть ли способ скопировать эти длинные имена переменных в строку поиска, поскольку в командной строке я не могу ввести " p" для вставки?


2
Я предполагаю, что этому также нужно избежать первого, $потому что этот знак означает конец строки.
Люк М.

1
@LucM OP может также использовать \Vлюбое место в шаблоне поиска для отключения «магических» символов.
dash-tom-bang

Ответы:


129

Вы можете вставить содержимое нумерованного или именованного регистра, набрав CTRLR {0-9a-z"%#:-=.}. Набрав, CTRL-R CTRL-Wвы можете вставить текущее слово под курсором. Видеть:

:he cmdline-editing

Чтобы получить больше информации.


8
спасибо за ответ, самый распространенный для меня: CTRL+ R +(что касается содержимого буфера обмена)
Peter Butkovic

4
0Регистр содержит последнюю строку-рывок.
Евгений Сергеев

52

Скопируйте его как обычно, затем CtrlR"вставьте. Есть много других CtrlRярлыков (например, калькулятор, текущее имя файла, содержимое буфера обмена). Введите, :help c_<C-R>чтобы увидеть полный список.


16

Копировать:
1) v(или выделить мышью в визуальном режиме)
2) y(дернуть)

Вставить:
1) /(режим поиска)
2) Ctrl + R + 0(вставить из извлеченного регистра)


1
Я искал этот ответ, когда искал этот вопрос в Google, интересно, почему у него отрицательные голоса.
Сантьяго Аризти

15

Введите, q:чтобы перейти в режим редактирования истории в новом буфере. Затем отредактируйте последнюю строку буфера и нажмите, Enterчтобы выполнить ее.


3
Так вот для чего был нужен этот буфер! Спасибо (я всегда случайно наткнулся на это, когда набирал: q, и запутался)
gsk

3
q/также полезен для доступа к истории поиска и вставки новых поисков.
79E09796

3

Или создайте команду в буфере vim, например введите ее в буфер:

s/foo/bar/gci

И скопируйте его в именованный регистр с помощью "ayy(если курсор находится на этой строке!).

Теперь вы можете выполнить содержимое регистра " a" из командной строки Vim Ex с помощью:

:[OPTIONAL_RANGE]@a

Я использую это все время.


ваше «ауу» либо цитируется (и, следовательно, неверно), либо нет (и, следовательно, в конце есть ошибочное «
ауу»

2

Как правило, это делается с помощью выбора мыши (возможно, CtrlInsили CtrlCпосле выбора), а затем, когда вы находитесь в строке команд / поиска, щелчком средней кнопки мыши (или ShiftInsили CtrlV).

Другой способ - написать свою командную строку / строку поиска в текстовом буфере со всеми возможностями редактирования, доступными в текстовых буферах, начиная с :и все, а затем в строке выполните:

"add@a

который сохранит всю командную строку в буфере a, а затем выполнит ее. Однако он не будет сохранен в истории команд.

Попробуйте создать следующую строку в текстовом буфере в качестве примера нажатия клавиш выше:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Наконец, вы можете войти, q:чтобы войти в редактирование истории в текстовом буфере.


1

Вы можете поместить курсор на слово, которое хотите добавить в свой образец, и затем нажать /или, :чтобы войти в режим поиска или командный режим, а затем нажмите, CtrlRCtrlWчтобы скопировать слово. Источник

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.