LoginSignup
4
4

More than 5 years have passed since last update.

備忘録Emacs

Last updated at Posted at 2014-08-21

Ctrl-zでサスペンド状態になった時の復帰方法

fg
を入力するだけ。

org-mode

org から Markdown に変換

M-x org-md-export-to-markdown
を実行。1度実行すると、ショートカットキーが使えるらしい。
なお Markdown から org へ戻すには Pandoc を使う。

WindowsのEmacsでgrepを用いる

Windows の Emacs 上で M-x grep を用いると、

No such directory found via CDPATH environment variable

のようなエラー( 環境変数CDPATHではそのようなディレクトリ見つかりません )が
出てしまう( grep をインストールし PATH を通していたとしても )。

原因として Emacs のターミナルの文字コードが
Shift-JIS になっていない可能性がある。
( Windows7 の内部エンコーディングは Shift-JIS )

そこで Emacs の標準文字コードを Shift-JIS にしてみる。
.emacs.el などに、以下の記述を追加。

(set-language-environment 'Japanese)
(prefer-coding-system 'shift_jis)

これは、

  • 言語環境は日本語ですよ
  • Emacs上のではどこ(バッファ、ターミナル、他)でも文字コードをShift-JISにしますよ

という設定を行っている。

この設定で Emacs の grep 内でも日本語が使えるようになる。

Shift-JISテキストのgrepが失敗する

Shift-JIS のテキストファイルを grep する際、
文字によっては grep のコマンドが正常に実行できない場合がある。

これは、Shift-JIS(cp932) の文字コードで、
2byte目が 0x5c のエスケープ文字 \ になっている為、
grep の引数が "" で閉じられない(後ろの " がエスケープされてしまう)。
この文字は俗に「だめ文字」「駄目文字」と呼ばれている。

だめ文字の詳細は↓が詳しい(だめ文字一覧が載っていて便利)。
https://sites.google.com/site/fudist/Home/grep/sjis-damemoji-jp

だめ文字を回避するには、以下の手段がある。

  • grep ではなく fgrep (正規表現を使わない固定文字列検索) を用いる
  • emacs 上での grep を諦めて、サクラエディタや Devas などのソフトウェアを用いる
  • 一時的に nkf で UTF-8 に変換してから grep を実行するパイプを書く http://chiiiiiiiii.hatenablog.com/entry/2013/02/26/181712

grepの引数

  • 正規表現で検索する場合は、引数に -E を指定する
  • マッチした前後の行を表示する場合は、引数に -1-4 などの数値を指定する
    • 前後の行の文字は灰色に色付けされていて、見やすい
  • 子ディレクトリも検索する場合は -r を指定する
    • 再帰的に検索するオプション
    • grep -nr "たまご" .\ のように書く

その他の引数は↓を参照。

複数のファイルにまたがる文字列を置換

grep-edit.elを用いる。

  1. grep-edit.elをEmacsにインストール。
  2. M-x grepで置換文字列を検索。
  3. grepの結果表示部分で M-x replace-stringM-x query-replace 等で一括変換
    • 文字列を正規表現で検索してから置換する場合は、 M-x query-replace-regexpM-x replace-regexp を使う
  4. C-c C-e で変更箇所が各ファイルに反映される
  5. C-x s ! で、全ファイルを保存

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4