it-swarm.com.ru

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

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

645
nearly_lunchtime
:g/^$/d

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

1178
soulmerge

Нашел это, это:

g/^\s*$/d

Источник: Сила г в vim wikia

173
nearly_lunchtime
:v/./d

или же

:g/^$/d

или же

:%!cat -s
49
mandaleeka

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

:g/^\_$\n\_^$/d
42
Draemon
  1. как убрать все пустые строки

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

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

  2. как убрать все пустые строки, оставив ОДИНОЧНУЮ пустую строку

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

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

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

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

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

для ввода ^ M, я должен контролировать-Q и контроль-M в окнах

13
gauge00

Как насчет:

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

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

fun! DelBlank()
   let [email protected]/
   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>
5
SergioAraujo

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

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

5
allenhwkim

работать с Perl в vim:

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

5
niejieqiang

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

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

:v/\S/d

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

4
Pokey
: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,12DBL, она удалит все пустые строки между 5-й и 12-й строками. Я думаю, что мой ответ - лучший ответ!

3
cn8341

Нажмите delete введите режим вставки, чтобы удалить пустые строки.

3
akp

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

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

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

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

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

1
user1481441