如何删除emacs中的非ascii字符

时间:2017-09-17 15:37:01

标签: unicode emacs character

我是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."))))

2 个答案:

答案 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:]]