文字コード混在環境でのEmacsのgrep
Ubuntuの標準の文字コードはUTF-8.しかし未だにEUC-JPなファイルを扱わざるを得ない場面も多い.そんな環境でもEmacsのgrepを使えるようにするお話.
grepとlgrep
まずは,grepについて.grepは日本語を扱うこともできるが,文字コードが混在してたらダメ.そこでlgrepを使う.lgrepは文字コードを気にせずgrepできるようになる賢いやつ.lvをインストールしたら付いてくるので,lvをまずはインストールしよう.
% sudo aptitude install lv
ちなみにlvはいろんな文字コードに対応したlessみたいなもの.これからはlessの代わりに使っても良い.あ,lgrepはgrepとオプションが違ったりするので完全な置換にはならないらしい.
とりあえず,lvをインストールしたのでlgrepが使えるようになった.
Emacsでlgrepを使う
実はEmacsには M-x lgrep が標準で存在する.しかし,これはgrepを対話的に行うもので,上記のlgrepとは違う(ような気がする).まぁ便利だけど.
今回は M-x grep で lgrep を使う設定..emacsに以下を記述する.
(if (file-exists-p "/usr/bin/lgrep") (setq grep-command "lgrep -nk -Ou8 "))
使い方
M-x grep とするとミニバッファが開く.(grep-commandで指定したコマンドが最初から入力されている)
そこに検索語句,検索するファイル(ワイルドカードが使える)の順に入力してRET.
すると検索結果が表示される.
ちなみにこの方法ではサブディレクトリは検索されないので,再帰的に検索したい場合は
M-x grep-findを使う.
使い方を簡単に説明すると,findの後に検索するディレクトリを指定.最後にキーワードを指定するだけ.
これはfind, xargs, lgrepを組み合わせて使っているだけなので,詳しくはfind, xargs, grepでググったら情報がたくさん出てくる.
いつかそれについてもエントリを書きたい.