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

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

// Comment1
// Comment2
// Comment3

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

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

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

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

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

26
задан karel 2011-06-21 21:44:57
источник

3 ответов

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

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

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

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

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

30
отвечен actionshrimp 2011-06-21 21:56:13
источник

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

1
отвечен TLP 2011-06-21 21:49:54
источник

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

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

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

0
отвечен Jeet 2011-06-21 22:14:49
источник

Другие вопросы vim text-manipulation paste

X