Go to the first, previous, next, last section, table of contents.

8-ビット文字やコントロール文字などの表示できない文字を捜したり削除するにはどうするのですか?

バッファに表示されている例えば \237 のような一文字は "C-s C-q 2 3 7" と入力すると検索できます. (これは変数 search-quote-char の値が 17 (C-q) の場合です.)

表示できない (8-bit またはコントロール) 文字すべてを検索するには 正規表現による検索を行います.

すべての表示可能な文字を表す正規表現: [\t\n\r\f -~]

すべての表示不可能な文字を表す正規表現: [^\t\n\r\f -~]

上の例の \t, \n, \r, \f のような特殊文字を isearch-forward-regexp または re-search-forward コマンドで対話的に 入力するには C-q を使う必要があります.

すなわち re-search-forward コマンドで表示不可能な文字を検索するには 次のように入力します:

  M-x re-search-forward RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET

isearch-forward-regexp コマンドを使うときには次のように入力します:

  M-C-s [^ TAB RET C-q RET C-q C-l SPC -~]

表示不可能なすべての文字を削除するには, replace-regexp コマンドを 次のように使います:

  M-x replace-regexp RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET RET

註:

上のような正規表現を Emacs Lisp の式では次のように書きます:

  ;; regexp matching all printable characters:
  "[\t\n\r\f -~]"
  ;; regexp matching all unprintable characters:
  "[^\t\n\r\f -~]"
  ;; alternative regexps for all unprintable characters:
  "[\C-@-\C-h\C-k\C-n-\C-_\C-?-\377]"
  "[\000-\010\013\016-\037\177-\377]"

("[\000-\010\013\016-\037\177-\377]" を対話的に使うときは

  [ C-q 000 - C-q 010 C-q 013 C-q 016 - C-q 037 C-q 177 - C-q 377 ]

と入力してください.)


Go to the first, previous, next, last section, table of contents.