Подсветка и замена непечатаемых символов Юникода в Emacs - PullRequest
7 голосов
/ 26 сентября 2011

У меня есть файл UTF-8, содержащий некоторые символы Unicode, такие как LEFT-TO-RIGHT OVERRIDE (U + 202D), которые я хочу удалить из файла.В Emacs они скрыты (что должно быть правильным поведением?) По умолчанию.Как сделать так, чтобы такие «экзотические» символы юникода были видны (не меняя при этом отображение «обычных» символов юникода, таких как немецкие умляуты)?И как я могу заменить их впоследствии (например, replace-string. C-X 8 Ret не работает для isearch / replace-string).

В Vim все довольно просто: эти символы отображаются в шестнадцатеричном представлениипо умолчанию (это ошибка или отсутствует функция?), и вы можете легко удалить их, например, с помощью :%s/\%u202d//g.Это должно быть возможно с Emacs?

Ответы [ 2 ]

9 голосов
/ 27 сентября 2011

Вы можете сделать M-x find-file-literally, тогда вы увидите эти символы.

Затем вы можете удалить их, используя обычные string-replace

4 голосов
/ 27 сентября 2011

Как насчет этого:

Поместите символ U + 202d, которому вы хотите соответствовать, в верхнюю часть списка уничтожений, набрав M -: (kill-new "\u202d").Затем вы можете вставить эту строку в различные команды поиска: Cy (например, query-replace) или My (например, isearch-forward).

(Отредактировано, чтобы добавить:)

Вы также можете просто вызывать команды неинтерактивно, что не представляет тех же трудностей ввода с клавиатуры, что и интерактивные вызовы.Например, введите M -: , а затем:

(replace-string "\u202d" "")

Это похоже на вашу версию Vim.Одно из отличий состоит в том, что он выполняет замены только от позиции курсора до нижней части файла (или суженной области), поэтому вам нужно перейти в верхнюю часть файла (или суженную область) перед запуском команды, чтобы заменить всеспички.

...