Какую команду можно запустить, чтобы удалить пустые строки в Vim?
Какую команду можно запустить, чтобы удалить пустые строки в Vim?
Ответы:
:g/^$/d
:g
выполнит команду в строках, которые соответствуют регулярному выражению. Регулярное выражение 'пустая строка' и команда :d
(удалить)
:%!cat -s
может быть выбор ..
Нашел это, это:
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
\_$
означает конец строки, который может быть использован внутри шаблона ( $
может использоваться только в конце шаблона.) То же самое относится к тому, \_^
что означает начало строки и может использоваться в любом месте внутри шаблона. Таким образом, шаблон соответствует пустой строке, новой строке и снова пустой строке. Смотрите страницу помощи Vim regex .
:g/^$/,/./-j
как убрать все пустые строки
:%s,\n\n,^M,g
(сделать это несколько раз, используя все пустые строки исчезли)
как убрать все пустые строки, оставив ОДИНОЧНУЮ пустую строку
:%s,\n\n\n,^M^M,g
(сделать это несколько раз)
как удалить все пустые строки, оставив две пустые строки в максимуме,
:%s,\n\n\n\n,^M^M^M,g
(сделать это несколько раз)
для ввода ^ M, я должен контролировать-Q и контроль-M в окнах
\r
вместо Ctrl-M
.
Как насчет:
:g/^[ \t]*$/d
работа с Perl в VIM:
:%!perl -pi -e s/^\s*$//g
chomp
делать эту работу?
Эта функция удаляет только две или более пустых строки, помещает строки ниже в ваш 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,12DBL, она удалит все пустые строки между 5-й и 12-й строками. Я думаю, что мой ответ - лучший ответ!
Если в вашем тексте есть что-то двойное, то эта команда удалит двойной интервал и объединит существующие повторяющиеся пустые строки в одну пустую строку. Он использует временный разделитель ^^^ в начале строки, поэтому, если это конфликтует с вашим контентом, выберите что-то еще. Строки, содержащие только пробелы, рассматриваются как пустые.
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
Это сработало для меня:
:%s/^[^a-zA-Z0-9]$\n//ig
Он в основном удаляет все строки, которые не имеют цифры или буквы. Поскольку все элементы в моем списке имели буквы, он удалил все пустые строки.