2011-09-26 79 views
7

我有一個UTF-8文件,其中包含一些Unicode字符,比如我想從文件中刪除的左對齊覆蓋(U + 202D)。在Emacs中,默認情況下它們是隱藏的(應該是正確的行爲?)。如何讓這種「異國情調」的unicode字符可見(而不改變顯示「常規」unicode字符,如德國元音變音)?之後如何替換它們(例如replace-stringC-X 8 Ret對isearch/replace-string不起作用)。在Vim中,它很容易:這些字符在默認情況下以其十六進制表示形式顯示(這是一個缺陷還是缺失功能?),例如,您可以使用:%s/\%u202d//g輕鬆刪除它們。這應該可以與Emacs?突出顯示和替換Emacs中的不可打印的Unicode字符

回答

9

你可以做M-x find-file-literally然後你會看到這些字符。

然後你可以使用刪除它們通常string-replace

+1

我用'toggle-enable-multibyte-characters'得到了相同的結果,但問題是,我不想看到它們,只有「異國情調」的。不過,我不知道如何替換它們(我不能用替換字符串輸入它們)。 – Christian

4

如何:

通過鍵入M-將要匹配在剪切環頂部的U + 202D性格:(kill-new "\u202d")。然後,您可以將該字符串插入各種搜索命令中,其中C-y(例如query-replace)或M-y(例如isearch-forward)。

(編輯補充:)

你也可以只調用命令非交互,其不存在相同的鍵盤輸入的困難,交互式電話。例如,鍵入M-:然後:

(replace-string "\u202d" "") 

這有點類似於你的Vim版本。一個區別是,它只執行從光標位置到文件底部(或縮小區域)的替換,因此您需要在運行命令之前將文件頂部(或縮小的區域)替換爲全部火柴。

+1

這工作,謝謝。但是這非常不方便,特別是因爲找到的字符(在isearch或replace中)不會突出顯示。也許還有其他的可能性.. – Christian