Ответ 1
:g/^$/d
:g
выполнит команду в строках, которые соответствуют регулярному выражению. Регулярное выражение - "пустая строка", а команда :d
(удалить)
Какую команду я могу запустить для удаления пустых строк в Vim?
:g/^$/d
:g
выполнит команду в строках, которые соответствуют регулярному выражению. Регулярное выражение - "пустая строка", а команда :d
(удалить)
Нашел это, это:
g/^\s*$/d
Источник: Power of g at vim wikia
Краткое объяснение
:g
:[range]g/pattern/cmd
Это действует для указанного [диапазона] (по умолчанию весь файл), выполняя команду Exd cmd для каждого шаблона соответствия строк (команда Ex - это команда, начинающаяся с двоеточия, например
:d
для удаления). Перед выполнением cmd ".
" Устанавливается на текущую строку.
:v/./d
или
:g/^$/d
или
:%!cat -s
Для удаления только нескольких пустых строк (уменьшения их до одной пустой строки) можно использовать следующие: и //
:g/^\_$\n\_^$/d
как удалить все строки пробелов
:%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 в окнах
Как насчет:
:g/^[ \t]*$/d
работать с perl в vim:
:%!perl -pi -e s/^\s*$//g
Эта функция удаляет только две или более пустых строки, помещает строки ниже в ваш 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>
Это работает для меня
:%s/^\s*$\n//gc
Я попробовал несколько ответов на этой странице, но многие из них не работали для меня. Может быть, потому, что я использую 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,12DBL он удалит все пустые строки между 5-й строкой и 12-й строкой. Я думаю, что мой ответ - лучший ответ!
Нажмите клавишу delete в режиме вставки, чтобы удалить пустые строки.
Если что-то имеет двойные строки, то это приведет к удалению двойного интервала и слиянию ранее существовавших повторяющихся пустых строк в одну пустую строку. Он использует временный разделитель ^^^ в начале строки, поэтому, если это противоречит вашему содержимому, выберите что-то еще. Строки, содержащие только пробелы, считаются пустыми.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Это сработало для меня:
:%s/^[^a-zA-Z0-9]$\n//ig
Он в основном удаляет все строки, которые не имеют числа или буквы. Поскольку все элементы в моем списке имели буквы, он удалял все пустые строки.