Vim: как вставить блок текста в конце нескольких строк?

скажем, у меня есть блок текста такой:

// Comment1
// Comment2
// Comment3

и я хочу добавить каждую из этих строк в конец 3 соответствующих строк кода:

foo = 1;
bar = 2;
baz = 3;

Так что конечный результат

foo = 1; // Comment1
bar = 2; // Comment2
baz = 3; // Comment3

есть ли простой способ сделать это в Vim?

28
задан karel
20.04.2023 6:34 Количество просмотров материала 2455
Распечатать страницу

3 ответа

использовать режим визуального блока ( Ctrl+v), чтобы выбрать один набор строк, то либоy или d них.

затем, если вы выбрали foo, bar, baz линии снова использовать режим визуального блока, чтобы выбрать первый столбец строк комментариев, а затем Shift+p их на место (или если вы выбрали строки комментариев, выберите последний столбец из строк foo bar baz и p их в место.

получение навык позиционирования может занять немного практики, но когда у вас есть ловкость вы будете летать. Когда вы выбрали блок, вы также можете использовать Shift+на для добавления, например, пробелов в блок (при добавлении новый текст появится только в верхней строке, но когда вы нажмете esc, он волшебным образом появится во всех выбранных строках). Аналогично Shift+i будет делать то же самое в начале выбранной блок на каждой линии.

вам нужно будет очистить пустые строки после этого.

там же отличный эпизод vimcasts показывать этих методов более подробно.

30
отвечен actionshrimp 2023-04-21 14:22

Ну, если это легко или нет, скажи мне. Выберите // Comment 1, нажмите dd удалить. Перейдите к строке с foo = 1; и нажмите p, вставить под строкой. Переместитесь в foo снова, и нажмите J присоединиться к ряду. Тада.

1
отвечен TLP 2023-04-21 16:39

следующее сделает точно чего вы описываете:

:%s@\(\w\s\+=\s\+\(\d\+\)\)@\=submatch(1) . " // Comment" . submatch(2)@

в зависимости от того, что вам действительно нужно сделать (в отличие от примера), на практике может быть проще заблокировать-выберите "/ / Comment1 " и т. д. блок ( Ctrlv), yank (y), перейдите в конец блока кода и вставьте.

0
отвечен Jeet 2023-04-21 18:56

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх