как присоединиться к различным определенным строкам файла из vi

У меня были проблемы с netinstall стабильными 64. Я в конечном счете преодолел это: Я нашел свои двоичные файлы nm и nm-апплета и добавил следующее к вершине файлов с нано: #!/bin/busybox. Я затем cated их на usbinit, как который unetbootin помещает на карту памяти так: cat /usr/bin/nm >> /media/sdc1/ubninit и cat /usr/bin/nm-applet >> /media/sdc1/ubninit.

Если Вы пробуете это, и это не работает, никакая большая потеря, но просто не забывает удалять строку, к которой Вы добавили nm и nm-applet.

3
09.09.2018, 21:19
5 ответов
:%s/\(.*\)\n\(^[^0-9]\)/\1\2/g

Если Вы хотите пространство или что-то между, добавьте его между \1 и \2.

3
27.01.2020, 21:13

можно сделать это на двух шагах в VIM, если это приемлемо:

Во-первых, присоединитесь ко всем строкам в одну строку.

с файлом, открытым в VIM, выпустите следующее нажатие клавиши: VGJ

  • V = Визуальный Режим (linewise, а не символьно-мудрый (v))
  • G = выделите все строки
  • J = Присоединитесь ко всем строкам

Во-вторых, разделите свои строки, в день форматируют получающиеся строки, запускаются с.

с файлом, открытым в VIM, дайте следующую команду:

:%s#\([0-9][0-9]/[0-9][0-9]/[0-9]\)#^M\1#g

Это будет искать единственную строку, к которой присоединяются, любую строку, которая соответствует NN/NN/N, где N = 0-9, который соответствует формату даты, с которого запускаются Ваши строки, и разделит на том соответствии.

2
27.01.2020, 21:13

Я говорю об энергии, это не будет работать в vi. Знайте об этом.

Что относительно

    :%v/^[^0-9]/d

удалить все строки в буфере, которые запускаются с числа.

    ggVG

выделить все строки

    :w ! paste -d ' ' -s

и после этого

    u

вернуться к начальной точке

0
27.01.2020, 21:13
  • 1
    Это не делает, кажется, работает. Morevorer, я заявил неправильный вопрос. Я хочу присоединиться к каждой строке, не запускающейся числом к предыдущей строке, запускающейся с числа. –  gogolb 28.10.2011, 16:34

Используйте v с join.

:v/^[0-9]/-1,join

Сломанный:

  • :v выберите любые строки, которые не соответствуют регулярному выражению
  • /^[0-9]/ любая строка, запускающаяся с цифры
  • -1, предыдущая строка к текущей строке
  • join объедините строки, выбранные, разделенные пробелом
2
27.01.2020, 21:13

попробуйте:

:g/^\d/,/^\d/-1j

и проигнорируйте сообщение об ошибке E16: Недопустимый диапазон

0
27.01.2020, 21:13

Теги

Похожие вопросы