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

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

+646
источник поделиться
14 ответов
:g/^$/d

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

+1178
источник

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

g/^\s*$/d

Источник: Power of g at vim wikia

Краткое объяснение :g

:[range]g/pattern/cmd

Это действует для указанного [диапазона] (по умолчанию весь файл), выполняя команду Exd cmd для каждого шаблона соответствия строк (команда Ex - это команда, начинающаяся с двоеточия, например :d для удаления). Перед выполнением cmd " . " Устанавливается на текущую строку.

+174
источник
:v/./d

или

:g/^$/d

или

:%!cat -s
+49
источник

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

:g/^\_$\n\_^$/d
+42
источник
  • как удалить все строки пробелов

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

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

  • как удалить все пробелы, выходящие из ОДИНОЧНОЙ пустой строки

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

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

  • как удалить все строки пробелов, оставляя две пустые строки AT MAXIMUM,

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

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

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

+14
источник

Как насчет:

:g/^[ \t]*$/d
+6
источник

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

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

+5
источник

Эта функция удаляет только две или более пустых строки, помещает строки ниже в ваш 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
источник

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

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

+5
источник

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

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

:v/\S/d

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

+4
источник
: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
источник

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

+3
источник

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

%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
+2
источник

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

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

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

+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос