2013-11-27 19 views
3

В vim, как я могу вставить несколько строк кода после каждой строки визуального блока?Vim: вставьте несколько строк после нескольких строк

Что у меня есть:

foo 
    bar 

1 
2 
3 

То, что я пытаюсь сделать, это:

1 
    foo 
    bar 
2 
    foo 
    bar 
3 
    foo 
    bar 

Есть ли способ легко это сделать?

+0

у вас есть свои ответы ниже, если это нечто более сложное, чем то, что вы показали, тогда вы должны взглянуть на макросы http://vim.wikia.com/wiki/Macros – bjhaid

+0

Я надеялся, что есть какой-то способ сделать это с помощью визуального режима, но я думаю, нет. Спасибо всем за помощь! –

+0

Если вы хотите использовать визуальный режим для этого, что-то здесь может помочь: http://vim.wikia.com/wiki/Repeat_command_on_each_line_in_visual_block –

ответ

4

Вы можете вырезать его регистр по умолчанию и сделать глобальную замену для остальных линий, как это:

Перейти к первой колонке первой строке файла:

gg0 

Вырезать данные:

3dd 

ли глобальное повторение для каждой строки файла и вставить его:

:g/^/put 

Это дает:

1 
    foo 
    bar 

2 
    foo 
    bar 

3 
    foo 
    bar 
+0

Это делает это лучше – bnjmn

1

Не полностью автоматизирован, но почти нет:

  • позволит зрительно выделить нужные строки для копирования с сдвига + V

  • Удалить с д

  • Переместить в первую line («1») и начать запись с q, за которым следует буква, то есть a.

  • Вставить с p, а затем перейти к следующей строке («2»). Остановить запись с помощью q.

  • Теперь повторите последнюю записанную команду с @@ или + назначенными письмами, т.е. @a.

2

предположим, что вы хотите скопировать и вставить номер строки 1 2 3, выполните следующую команду:

:g/^\S/1,3t. 

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

Вы также можете изменить 1,3 на другой диапазон.

Смежные вопросы