Vim удалить пустые строки
какую команду я могу запустить, чтобы удалить пустые строки в Vim?
14 ответов
:g/^$/d
:g
выполнит команду в строках, соответствующих регулярному выражению. Регулярное выражение - "пустая строка", а команда -:d
(удалить)
следующие можно использовать для удаления только нескольких пустых строк (уменьшите их до одной пустой строки) и оставить одни пустые строки нетронутыми:
:g/^\_$\n\_^$/d
-
как удалить все пробелы строки
:%s,\n\n,^M,g
(сделайте это несколько раз, пока все пустые строки не исчезли)
-
как удалить все пустые строки, оставляя одну пустую строку
:%s,\n\n\n,^M^M,g
(сделать это несколько раз)
-
как удалить все пустые строки, оставляя две пустые строки максимум,
:%s,\n\n\n\n,^M^M^M,g
(сделать это несколько раз)
в порядке для ввода ^M я должен контролировать-Q и control-M в windows
эта функция удаляет только две или более пустые строки, помещает строки ниже в 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
Он в основном удаляет все строки, которые не содержат цифру или букву. Поскольку все элементы в моем списке имели буквы, он удалил все пустые строки.