Как удалить пробел в Emacs? - PullRequest
10 голосов
/ 13 октября 2011

У меня есть текстовый файл с линиями фиксированной длины, дополненными конечными пробелами, такими как:

hello world                 ↩
this is some other line     ↩
x                           ↩

, и я хочу удалить конечные пробелы в каждой строке, чтобы он выглядел как

hello world↩
this is some other line↩
x↩

Можно ли написать макрос emacs, который может решить эту проблему?

Редактировать: в строках может быть любое произвольное количество пробелов перед конечными пробелами в конце, поэтому

hi     world                ↩

может быть допустимой строкой в ​​этом файле.

Ответы [ 4 ]

36 голосов
/ 13 октября 2011

Существует команда emacs delete-trailing-whitespace, которая удаляет пробелы после последнего символа.Если вы запустите его без какого-либо региона, он очистит весь буфер.Если у вас есть активный регион, очищаются только строки в этом регионе.

Многие люди добавляют следующий код в .emacs, чтобы при каждом сохранении файла очищались все конечные пробелы:

(add-hook 'before-save-hook
          'delete-trailing-whitespace)
1 голос
/ 14 октября 2011

http://www.emacswiki.org/emacs/DeletingWhitespace имеет все, что вам нужно знать.

Это быстро и работает во всех версиях Emacs:

M-x picture-mode, затем Cc Cc

1 голос
/ 13 октября 2011

Я знаю, что вы уже получили ответ, но в дополнение к fixup-whitespace есть также delete-horizontal-whitespace, который удаляет все пробелы вокруг точки. Есть несколько других связанных команд, которые полезны в различных ситуациях. Вы можете посмотреть их с помощью M-: (info "(elisp) User-Level Deletion").

1 голос
/ 13 октября 2011

Emacs имеет встроенный fixup-whitespace (M-space), который сжимает более одного пробела только в один:

hello      world         ↩
                    ^
                  cursor 

M-x fixup-whitespace

hello world ↩
           ^
         cursor

Итак, вы можете просто определить макрос, который:

  • сначала вызывает fixup-whitespace
  • , затем удаляет последний пробел

Другим может быть M-x replace-regexp RET [ ]+' RET ' RET, который решает проблему с помощью регулярных выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...