Подтвердить что ты не робот

Копирование из поискового запроса vim

Я пытаюсь скопировать текст из моего поискового запроса vim. Я потратил довольно много времени на создание регулярных выражений для sed search & replace. Поскольку мое регулярное выражение часто довольно сложно, мне нравится создавать его в поиске перед выполнением:% s/regex/new text/g

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

Любые идеи о том, как получить поисковый запрос в буфер?

Спасибо,

Эндрю

4b9b3361

Ответ 1

В командном режиме (где вы находитесь, когда вы нажмете: в обычном режиме), вы можете сделать ctrl-R /, который будет расширяться до вашего последнего условия поиска (другие ctrl-R фавориты "для вашего yank-буфера или% для полный путь к текущему окну)

На самом деле вам это не нужно. Если вы не укажете поисковый запрос для: s, предполагается, что вы хотите использовать последнее, что искали. поэтому вы можете /searchregex, а затем сразу после этого:% s//replaceregex/и будет использовать поисковое регулярное выражение для замены.

Ответ 2

Используйте q:, чтобы открыть редактируемое окно, содержащее историю вашей командной строки. Оттуда вы можете использовать все свои обычные инструменты Vim для копирования/вставки/и т.д.

Для эквивалентной функции, связанной с историей поиска, введите q/.

Ответ 3

q/ показывает историю поиска. Для обратного действия копирования строки из вашего обычного буфера в буфер команд или буфер поиска, что не позволяет использовать p в обычном режиме, используйте Ctrl-R 1 для вставки.

Ответ 4

Копировать текст между реестрами можно с помощью :let, например. скопируйте последний поисковый запрос в регистр b:

:let @[email protected]/

Затем используйте ctrl-R b, чтобы вставить его, как в ответе Мэтта Бриггса. Конечно, это необязательно, если вы можете вставить его напрямую, используя ctrl-R / (в режиме вставки или ex) или "/p (в обычном режиме), но с этим отображением:

nnoremap <silent> y/ :let @"[email protected]/<CR>

вы можете ввести y/, чтобы скопировать последний поисковый запрос в неназванный регистр для легкого вставки. Вместо этого вы можете использовать регистр *, чтобы скопировать в системный буфер обмена и добавить текст в другие приложения:

nnoremap <silent> y/ :let @*[email protected]/<CR>

См

:help 'clipboard'
:help registers

для получения дополнительной информации о регистрах Vim и использовании системного буфера обмена.