Vim удалить пустые строки

какую команду я могу запустить, чтобы удалить пустые строки в Vim?

14 ответов


:g/^$/d

:g выполнит команду в строках, соответствующих регулярному выражению. Регулярное выражение - "пустая строка", а команда -:d (удалить)


нашел, это:

g/^\s*$/d

источник: власть g в vim wikia


:v/./d

или

:g/^$/d

или

:%!cat -s

следующие можно использовать для удаления только нескольких пустых строк (уменьшите их до одной пустой строки) и оставить одни пустые строки нетронутыми:

:g/^\_$\n\_^$/d

  1. как удалить все пробелы строки

    :%s,\n\n,^M,g
    

    (сделайте это несколько раз, пока все пустые строки не исчезли)

  2. как удалить все пустые строки, оставляя одну пустую строку

    :%s,\n\n\n,^M^M,g
    

    (сделать это несколько раз)

  3. как удалить все пустые строки, оставляя две пустые строки максимум,

    :%s,\n\n\n\n,^M^M^M,g
    

    (сделать это несколько раз)

в порядке для ввода ^M я должен контролировать-Q и control-M в windows


Как насчет:

:g/^[ \t]*$/d

работа с perl в vim:

:%!perl -pi -e s/^\s*$//g


это работает для меня

:%s/^\s*$\n//gc


эта функция удаляет только две или более пустые строки, помещает строки ниже в vimrc, а затем использует \d для вызова функции

fun! DelBlank()
   let _s=@/
   let l = line(".")
   let c = col(".")
   :g/^\n\{2,}/d
   let @/=_s
   call cursor(l, c)
endfun
map <special> <leader>d :keepjumps call DelBlank()<cr>

я попробовал несколько ответов на этой странице, но многие из них не сработали для меня. Может быть, потому, что я использую Vim на Windows 7 (Не издевайтесь, просто пожалейте меня :p)?

вот самый простой, который я нашел, который работает на Vim в Windows 7:

:v/\S/d

вот более длинный ответ на Vim Wikia:http://vim.wikia.com/wiki/Remove_unwanted_empty_lines


:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line

вставить

:command -range=% DBL :<line1>,<line2>g/^\s*$/d

в вашей .vimrc, затем перезапустите vim. если вы используете команду :5,12 цена он удалит все пустые строки между 5-й и 12-й строками. Я думаю, что мой ответ-лучший ответ!


если что-то дважды разместило ваш текст, эта команда удалит двойной интервал и объединит ранее существовавшие повторяющиеся пустые строки в одну пустую строку. Он использует временный разделитель ^^^ в начале строки, поэтому, если это противоречит вашему контенту, выберите что-то другое. Строки, содержащие только пробелы, считаются пустыми.

%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*

это сработало для меня:

:%s/^[^a-zA-Z0-9]$\n//ig

Он в основном удаляет все строки, которые не содержат цифру или букву. Поскольку все элементы в моем списке имели буквы, он удалил все пустые строки.


пресс удалить клавиша в режиме вставки для удаления пустых строк.