2014-08-28 2 views
1

У меня есть более чем 40000 записей, как это:ВИМ: как дублировать одну запись

------ 
18 
1,5,0.33 
6,10,0.34 
11,15,0.36 
16,20,0.37 
21,25,0.40 
26,30,0.44 
------ 

И я хочу, чтобы преобразовать так:

------ 
18 1,5,0.33 
18 6,10,0.34 
18 11,15,0.36 
18 16,20,0.37 
18 21,25,0.40 
18 26,30,0.44 
------ 

Зная, что:

  • Количество строк после первого числа является переменным, но всегда> 1
  • Я знаю о записи макросов, поэтому я хочу записать один и воспроизвести его 40000 раз. Я просто хочу знать, с точки зрения пользователя, какие клавиши я должен ввести
+1

Что вы пробовали? Как бы вы вручную атаковали эту проблему? При этом вы почти там; это всего лишь небольшой шаг к надежному макросу. –

+0

Я просто не знал, как вставить через '' (есть 'Ctrl + r'), как LK, объясненный в его ответе –

ответ

1

После последовательности должны сделать трюк

dd<cr> 
:%norm I<c-r>*<bck> <cr> 

где <cr> является возврат каретки и <c-r> İŞ Ctrl + R

Разбивка выглядит следующим образом

  • dd удаляет первую строку, содержащую символ Acter вы хотите вставить
  • :%norm выполняет обычную команду на остальной части файла
  • I ухаживает вставки в передней линии.
  • <c-r>* вставляет удаленное содержимое первой строки, включая новую строку.
  • <bck> <cr>, чтобы очистить строку и добавить пробел

Если вы хотите, чтобы ввести его тогда:

  • внизveyвниз
  • Ctrlv
  • /^-Up
  • ICtrlr*Backspace

Объяснение:

  • Перейти к первому номеру: вниз, v: выберите режим; e идти до конца слова
  • Копия: y
  • Визуальный режим покадрово: Ctrlv
  • Поиск первой строки, начиная с - затем Up: /^-Up
  • режим
  • Вставка что копирует все строки и вставляет текущий буфер: ICtrlr*
+0

Спасибо, отлично! –

1

другой вариант:

DJ 
:%s/^/<c-r>"/
+0

+1 А, это отвечает на мой вопрос о 'dd'including the newline. tx –

+0

Я отредактировал ответ LK, чтобы добавить мое решение, которое я только что применил к записям. Спасибо за ваше решение! –

+0

@OlivierPons - 'dd' в моем ответе будет заменен на' DJ', поэтому вам не понадобится backspace. –

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