Як я можу зібрати декілька рядків до реєстру?


44

Я хочу стягнути кілька рядків в одному реєстрі в vim, щоб легко вставити різні текстові шаблони в документ.

Наприклад, "iyy yanks тільки поточний рядок, якщо я спробую вибрати кілька рядків у візуальному режимі, він не записується в реєстр.

Будь-які пропозиції?


"якщо я спробую вибрати кілька рядків у візуальному режимі, він не записується до реєстру." <- Дійсно? Працює для мене ...
Біллі ONeal

і для мене теж ...
ulidtko

ах добре, я намагався з "iyv, нерозумно мені. повинен бути Vjjj" я, як згадується ulidtko.
риз

Відповіді:


59

Використовуйте 3Yдля вибивання 3 рядка в регістр за замовчуванням; "i3Yза входження в реєстр i.

Крім того, мій улюблений спосіб - не підраховувати рядки, які я хочу стягувати, а вибирати їх у візуальному режимі за допомогою Vі переміщення команд, а потім натискати, yщоб витягнути його або "_yпотягнути до реєстру.

Крім того, я щойно спробував вибрати декілька рядків у режимі Visual Line та перетягнути в нереєстровий регістр, наприклад Vjjj"oy- і це працює.


1
+1 - але Vце режим Visual Line, vце візуальний режим.
Біллі ONeal

добре, добре, правильно. Режим візуальної лінії %)
ulidtko

1
з радістю прийняв це, найшвидший спосіб для мене поки.
риз

24

Ви можете використовувати наступне:

:2,5y a

Лінії 2 - 5. В РЕЄСТРУВАННЯ a

:7pu a

Вставити реєстр під рядком 7.


1
Питання задається: "Як я можу об'єднати декілька рядків у реєстр ?" Будь ласка, покажіть, як ці команди працюють з регістрами.
Скотт

Я сподіваюся, що моя редакція виконає ваш запит.
alock27

Вибач, ні. У запитанні явно згадувалося "зареєструвати" неодноразово, згадувалося про "легко вставити різні текстові шаблони", і наводив приклад, використовуючи регістр, який не використовується за замовчуванням.
Скотт

3
@Scott Мої вибачення. Чому ти просто не сказав: "Чувак, перевіри свій метод за допомогою: reg. Ви побачите, що він не працює". І мені все було б схоже на "Ой, моя погана".
alock27

1
Шукав способу витягнути того, хто подає файл в реєстр + для копіювання в буфер обміну. :% y + зробив трюк, спасибі
AlexMA

10

Використовуйте mдля позначення початку з назвою буфера (щоб ви могли вводити mx). Перемістіть курсор вниз, де ви хочете зупинити копіювання, і введіть y'x(або d'xякщо ви вирізаєте та вставляєте). Потім перемістіть курсор до місця, куди потрібно вставити, і введіть p.

Командний лист Vim


Ви впевнені, що не маєте на увазі vцього m?
Біллі ONeal

@BillyONeal 'v' запускає візуальний режим і дозволяє робити те саме, 'm' використовується для "маркування" регіону.
Ніфле

6

Ви додаєте команду до числа, щоб отримати кількість рядків. Ви також можете використовувати "текстовий об'єкт" (наприклад, "] для блоку та") "для абзацу) - це буде працювати в декількох рядках контекстуально - за замовчуванням часто це один рядок. Наприклад, "r5yyвдасться перетягнути п'ять рядків, починаючи з курсору, в регістр 'r'. (Або ви можете ввести :.,+4y rце так само в колишньому режимі.) Ви можете комбінувати числа і з текстовими об'єктами; "r10y).


1

Можна витягнути кілька рядків у випадку, коли це останній пошук.

Наприклад, наведений такий нелінійний малюнок :

/start\_.\{-}end/norm gn"iy

тоді ви матимете свій витягнутий багаторядковий візерунок (між startта end) у своєму @iреєстрі (друкувати за echo @i).

Пов'язане: Як надрукувати багаторядковий збіг? у Vi

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.