Есть ли какой-нибудь простой / быстрый способ "выдернуть" регистр "последнего поиска" vim ("/)?"
Из документации vim видно, что ответ отрицательный, но его можно назначить с помощью команды let:
It is writable with ":let", you can change it to have 'hlsearch' highlight
other matches without actually searching. You can't yank or delete into this
register.
В идеале я хотел бы сделать что-то вроде:
"/5yw
который выдернет следующие 5 слов под курсором и поместит их в последний буфер поиска
В качестве альтернативы, если есть способ поиска содержимого именованного регистра, это тоже сработает. Другими словами, если бы я мог:
"A5yw
а затем найдите то, что находится в регистре A, это тоже сработает.
Самое близкое, что я могу сделать, - это вставить именованный регистр, а затем скопировать этот регистр в последний регистр поиска, например
"A5yw
:let @/=@A
Рискуя сделать длинный вопрос длиннее, я хочу заявить, что не всегда я хотел бы «выдернуть и выполнить поиск» не всегда 5 слов - иногда это 17 символов, иногда до конца строки и т. Д. поэтому жестко запрограммированный макрос не дает мне той гибкости, которую я хотел бы.
"ayw
(нижний регистр) заменит содержимое регистра 'a', а"Ayw
добавит в регистр 'a'Если вы не использовали регистр для хранения извлеченного текста, vim использует
0
регистр. Вы можете найти это, набравCtrl-R 0
после/
.Более сложный пример. Скажем, вы хотите найти в другом буфере текст внутри кавычек, который сейчас находится под курсором:
yi"
(внутренняя цитата)/Ctrl-R 0
источник
"Ayw
приводит к добавлению строки в регистре A. Но простой набор,yw
а затем вводCtrl-R 0
после/
всегда дает именно то, что я выдернул.Для этого я использую следующий код:
источник
Поиск выбора:
если вы хотите сначала выдернуть часть строки, затем используйте «v» и перемещайте курсоры, пока не отметите то, что хотите, затем нажмите y для восстановления, и теперь выделение находится в регистре 0
затем вы можете ввести
/Ctrl-R 0
источник
По сути, это расширенная версия команд # и *, верно? Похоже, вы хотите определить собственный оператор (команду, ожидающую движения). На самом деле я никогда не делал этого, но я нашел плагин, который, похоже, может облегчить это. Приведено несколько примеров.
источник