我是elisp编程的新手,我正在尝试编写一个Emacs elisp函数来删除突出显示区域中的所有非ASCII字符。我在这里找到了一个如何查找非ASCII字符的示例elisp函数:https://www.emacswiki.org/emacs/FindingNonAsciiCharacters。我试图自己修改它,但无法让它工作。有人可以告诉我如何修改以下elisp函数来删除GNU Emacs中突出显示区域中的所有非ASCII字符:
(defun find-first-non-ascii-char ()
"Find the first non-ascii character from point onwards."
(interactive)
(let (point)
(save-excursion
(setq point
(catch 'non-ascii
(while (not (eobp))
(or (eq (char-charset (following-char))
'ascii)
(throw 'non-ascii (point)))
(forward-char 1)))))
(if point
(goto-char point)
(message "No non-ascii characters."))))
答案 0 :(得分:3)
我想我通过修改这篇文章的答案找到了答案:how to collapse whitespaces in a region?
以下是我提出的建议:
(defun del-binary_characters (beg end)
"Delete binary characters in a region"
(interactive "r")
(save-excursion
(save-restriction
(narrow-to-region beg end)
(goto-char (point-min))
(while (re-search-forward "[^[:ascii:]]" nil t)
(replace-match "")))))
答案 1 :(得分:0)
这与您要求的不完全相同,但是要以交互方式查找非ASCII字符,您可以执行以下操作:
M-x search-forward-regexp
[^[:ascii:]]