Яку команду можна запустити для видалення порожніх рядків у Vim?
Яку команду можна запустити для видалення порожніх рядків у Vim?
Відповіді:
:g/^$/d
:g
виконає команду в рядках, які відповідають регулярному вираженню. Режекс - "порожній рядок", а команда - :d
(видалити)
:%!cat -s
може бути вибір ..
Знайшли, це:
g/^\s*$/d
Джерело: Потужність g у vim wikia
Коротке пояснення
:g
:[range]g/pattern/cmd
Це діє на вказаний [діапазон] (цілий файл за замовчуванням), виконуючи команду Ex cmd для кожного шаблону відповідності рядків (команда Ex - це така, що починається з двокрапки, наприклад
:d
для видалення). Перед виконанням cmd , ".
" встановлюється поточний рядок.
:v/./d
або
:g/^$/d
або
:%!cat -s
Для видалення лише декількох порожніх рядків (зменшення їх до одного порожнього рядка) можна використовувати та залишати недоторканими одні порожні рядки:
:g/^\_$\n\_^$/d
\_$
означає кінцевий рядок, який можна використовувати всередині візерунка ( $
можна використовувати лише в кінці шаблону.) Те саме, \_^
що означає початок рядка, і його можна використовувати будь-де всередині шаблону. Отже, шаблон відповідає порожньому рядку, новому рядку і знову порожньому рядку. Див . Сторінку довідки Vim regex .
:g/^$/,/./-j
як видалити всі заготовки рядків
:%s,\n\n,^M,g
(зробіть це кілька разів, використовуючи всі порожні рядки, що пішли)
як видалити всі заготовки рядків, залишаючи SINGLE порожньою лінією
:%s,\n\n\n,^M^M,g
(зробіть це кілька разів)
як видалити всі заготовки, залишаючи ДВА порожніх рядка НА МАКСИМАЛЬНИЙ,
:%s,\n\n\n\n,^M^M^M,g
(зробіть це кілька разів)
для того, щоб ввести ^ M, я повинен контролювати-Q та control-M у windows
\r
замість Ctrl-M
.
Як щодо:
:g/^[ \t]*$/d
робота з perl in 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
В основному він видаляє всі рядки, у яких немає цифри чи літери. Оскільки всі елементи в моєму списку мали літери, він видалив усі порожні рядки.