Чи існує спосіб Vim вставити текст у рядок пошуку?


105

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

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Чи є спосіб КОПУВАТИ ці довгі імена змінних вниз у рядок пошуку, оскільки в командному рядку я не можу ввести " p" вставити?


2
Я здогадуюсь, що Tou також повинен уникнути першого, $оскільки цей характер означає кінець рядка.
Люк М

1
@LucM ОП також може використовувати \Vбудь-де в шаблоні пошуку, щоб відключити "магічні" символи.
dash-tom-bang

Відповіді:


128

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

:he cmdline-editing

для отримання додаткової інформації.


8
дякую за відповідь, найпоширеніший для мене такий: CTRL+ R +(як це стосується вмісту буфера обміну)
Петро Буткович

4
0Регістр містить останній рядок-ривок.
Євгеній Сергєєв

52

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


16

Скопіюйте:
1) v(або виділіть мишкою у візуальному режимі)
2 y)

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


1
Я шукав цю відповідь, коли шукав це питання в google, мені цікаво, чому це негативні голоси.
santiago arizti

15

Введіть, q:щоб перейти в режим редагування історії в новому буфері. Потім відредагуйте останній рядок буфера і натисніть, Enterщоб виконати його.


3
Так ось для чого був цей буфер! Дякую (мені завжди траплялося натрапляти на нього під час набору: q і плутатись)
gsk

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

3

Або створіть команду в буфері vim, наприклад, введіть її в буфер:

s/foo/bar/gci

І скопіюйте його в названий реєстр, з "ayy(якщо курсор знаходиться в цьому рядку!).

Тепер ви можете виконати вміст " a" регістру з командного рядка Vim в Ex за допомогою:

:[OPTIONAL_RANGE]@a

Я ним користуюся постійно.


ваш "ай" або котирується (і тому невірно), або його немає (і тому в кінці є помилка)
tzot,

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.