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

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

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

Ответ 1

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

:he cmdline-editing

для получения дополнительной информации.

Ответ 2

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

Ответ 3

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

Ответ 4

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

s/foo/bar/gci

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

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

:[OPTIONAL_RANGE]@a

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

Ответ 5

Как правило, вы будете делать это с помощью мыши, выбрав (возможно, Ctrl Ins или Ctrl C после выбора), а затем, когда в строке команды/поиска нажмите среднюю кнопку (или Shift Ins или Ctrl V).

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

"[email protected]

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

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

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

Ответ 6

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

Paste:
1) / (режим поиска)
2) Ctrl + R + 0 (вставить из yanked register)