В Vim есть способ вставить текст в строку поиска? - PullRequest
99 голосов
/ 19 сентября 2008

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

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

Ответы [ 7 ]

121 голосов
/ 19 сентября 2008

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

:he cmdline-editing

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

49 голосов
/ 19 сентября 2008

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

14 голосов
/ 19 сентября 2008

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

11 голосов
/ 20 апреля 2017

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

Paste:
1) / (режим поиска)
2) Ctrl + R + 0 (паста из выдернутого регистра)

3 голосов
/ 19 сентября 2008

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

s/foo/bar/gci

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

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

:[OPTIONAL_RANGE]@a

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

2 голосов
/ 19 сентября 2008

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

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

"add@a

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

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

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

0 голосов
/ 09 февраля 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...