Как удалить пробел в emacs?
У меня есть текстовый файл с фиксированными линиями длины, дополненный конечными пробелами, например:
hello world ↩
this is some other line ↩
x ↩
и я хочу удалить конечные пробелы в каждой строке, чтобы он выглядел как
hello world↩
this is some other line↩
x↩
Можно ли написать макрос emacs, который может решить эту проблему?
Изменить: линии могут иметь любое произвольное количество пробелов в нем перед конечными пробелами в конце, поэтому
hi world ↩
может быть допустимой строкой в этом файле.
Ответы
Ответ 1
Emacs имеет встроенный fixup-whitespace
(M-space
), который сжимает более одного места только в одном пространстве:
hello world ↩
^
cursor
M-x fixup-whitespace
hello world ↩
^
cursor
Итак, вы можете просто определить макрос, который:
- первые вызовы
fixup-whitespace
- затем удаляет последние пробелы
Другим может быть M-x replace-regexp RET [ ]+' RET ' RET
, который решает проблему с использованием регулярных выражений.
Ответ 2
Существует команда emacs delete-trailing-whitespace
, которая избавляется от пробелов после последнего символа. Если вы запустите его без какого-либо отмеченного региона, он очистит весь буфер. Если у вас активная область, очищаются только строки в области.
Многие люди добавляют следующий код в свой .emacs
, так что всякий раз, когда он сохраняет файл, все конечные пробелы очищаются:
(add-hook 'before-save-hook
'delete-trailing-whitespace)
Ответ 3
Я знаю, что у вас уже есть ответ, но в дополнение к fixup-whitespace
есть также delete-horizontal-whitespace
, который удаляет все пробелы вокруг точки. Есть пара других связанных команд, которые полезны в различных ситуациях. Вы можете просмотреть их с помощью M-: (info "(elisp) User-Level Deletion")
.
Ответ 4
http://www.emacswiki.org/emacs/DeletingWhitespace содержит все, что вам нужно знать.
Этот быстрый и работает во всех версиях Emacs:
M-x picture-mode
, затем C-c C-c