Скажем, у меня есть такой блок текста:
// Comment1 // Comment2 // Comment3
И я хочу добавить каждую из этих строк в конец 3 соответствующих строк кода:
foo = 1; бар = 2; баз = 3;
Так что конечный результат
foo = 1; // Comment1 бар = 2; // Comment2 баз = 3; // Comment3
Есть ли простой способ сделать это в Vim?
Ответы:
Используйте режим визуального блока ( Ctrl+ v), чтобы выбрать один набор линий, затем либо одну, yлибо dих.
Затем, если вы выбрали строки foo, bar, baz, снова используйте режим визуального блока, чтобы выбрать первый столбец строк комментария, а затем Shift+ pих на место (или, если вы выбрали строки комментариев, выберите последний столбец базы foo bar линии и pих на место.
Чтобы освоить позиционирование, может потребоваться немного практики, но когда у вас есть ловкость, вы будете летать. Когда вы выбрали блок, вы также можете использовать Shift+, Aчтобы добавить, например, пробелы в блок (при добавлении новый текст будет отображаться только в верхней строке, но при нажатии клавиши Esc он будет волшебным образом появляться во всех выбранных строках). , Точно так же Shift+ iбудет делать то же самое в начале выбранного блока в каждой строке.
Вы должны будете очистить пустые строки потом.
Также есть отличный эпизод vimcasts, в котором эти техники описаны более подробно.
источник
:set ve=all
очень универсальным. Я лично использую плагин UnconditionalPaste ( vim.org/scripts/script.php?script_id=3355 ), так как он немного лучше соответствует моим потребностям.Ну, если это легко или нет, скажи мне. Перейдите к
// Comment 1
, нажмите,dd
чтобы удалить. Перейдите к строке сfoo = 1;
и нажмитеp
, чтобы вставить ниже линии. Поднимитесь доfoo
снова и нажмите,J
чтобы присоединиться к ряду. Тад.источник
Следующее будет делать именно то, что вы описываете:
В зависимости от того, что вам действительно нужно сделать (в отличие от примера), на практике может быть проще выбрать блок // «Comment1» и т. Д. Block ( Ctrlv), yank ( y), перейти к концу кода блок и вставить.
источник