*紹介 [#f0fe8d83]

Emacsはエディタとの見方が最も一般的でしょうが、Emacs Lisp言語のインタプリタともいえます。Lispを用いて際限なくカスタマイズできるため、往々にして手段と目的が逆転しがちです。おかげで各種プログラミング言語やTeXソースなどの編集支援や、MUA・WWWブラウザ等様々な機能がどこかのだれかによって実現されています。Muleと呼ばれているものはEmacsを多言語対応にしたものであり、本質的には同じものです。(Emacs20.1で統合されたそうですが、詳しくは知りません)

*link [#p76aae7e]

**入手 [#ya8ff613]

-[[GNU Emacs:http://www.gnu.org/software/emacs/emacs.html]] 総本山(と言ってよいのでしょうか)
-[[XEmacs:http://www.xemacs.org/]] こちらも人気
-[[Meadow:http://www.meadowy.org/meadow/wiki/]] Windows環境ならこれを
-[[xyzzy(ばさらやる気のない謎のぺぇじ):http://www.jsdlab.co.jp/~kamei/]] これも人気

**使用法など [#i519b3da]
-[[Emacs 電子書棚:http://www.bookshelf.jp/]] 膨大!ここだけでOK
-[[Programming in Emacs Lisp: Table of Contents:http://www.math.s.chiba-u.ac.jp/~matsu/lisp/emacs-lisp-intro-jp_toc.html]]

**外部パッケージ [#eeb26e95]

-TeXには[[YaTeX:http://www.yatex.org/]]か[[AUC TeX:http://www.gnu.org/software/auctex/]]を。bibtex-modeと組合せると良い感じ。[[BibTeX と bibtex-mode, reftex-mode の使い方:http://www.fan.gr.jp/~ring/doc/bibtex.html]]及び[[備忘録 - Meadow:http://chaosweb.complex.eng.hokudai.ac.jp/~hagi/contents/memo-meadow-tex.html]]というページが参考になります。

-HTMLには[[html-helper-mode:http://www.santafe.edu/~nelson/tools/]]など。キーバインドは[[こちらの「html-helper-mode command reference」というページ:http://www.os-omicron.org/~takano/private/obsolete/html-helper-mode.html]]を参考にしています。

-[[TRAMP:http://savannah.nongnu.org/projects/tramp]]により、SSH経由でリモートのファイル操作ができます。

-[[Wanderlust:http://www.gohome.org/wl/index.ja.html]] -- メール/ニュース管理システム

などを私は使っています。標準でついてくるライブラリも色々あって、例えば[[Standard Elisp Libraries:http://www.boreas.dti.ne.jp/~miyoshi/Meadow/elisp.html]]なんかが参考になります。

*Meadow [#xb451ba5]
先程述べたように、Windows環境でEmacsを使用するためには[[Meadow:http://www.meadowy.org/meadow/wiki/]]という選択肢が何かと便利です。ですが、Windows環境とUNIX環境の狭間で困ることが幾つかあります。私の場合[[migemo:http://migemo.namazu.org/]]と印刷に苦労した覚えがあります。migemoに関しては[[こちらの「migemo」というページ:http://www4.kcn.ne.jp/~boochang/emacs/migemo.html]]を、印刷に関しては[[川又研究室knowhow集:http://www.mk.ecei.tohoku.ac.jp/~masahide/knowhow/knowhow.html]]を参考にさせてもらいました。

*設定その他 [#l39c35ca]
**ecb [#q9f22f7d]
[[ECB - Emacs Code Browser:http://ecb.sourceforge.net/]]なのだそうで、[[スクリーンショット:http://ecb.sourceforge.net/screenshots/1.png]]が派手。いじりたいが時間がない。


**speedbar [#aab18484]
[[speedbar:http://cedet.sourceforge.net/speedbar.shtml]]でツリー表示ができるみたい。いじりたいが時間がない。とりあえず

 (define-key speedbar-file-key-map "a" 'speedbar-toggle-show-all-files)

でファイルの表示/非表示のトグルが可能(http://chaosweb.complex.eng.hokudai.ac.jp/~hagi/contents/files/meadow199.el より)。マウス中クリックのメニューからも辿れる。

**Windowsまわり [#p29bc302]
http://wiki.gohome.org/teranisi/?EmacsOnWindows

**face [#oc1fbef6]
文脈の機能に応じて色分けが可能。
 list-faces-display
で閲覧

**印刷 [#rcaca37c]
 C-u M-x ps-print-buffer-with-faces
で、現在のバッファをfaceつきでPostScriptのファイルを作ってくれる。詳しくはps-print.el参照。日本語が含まれる場合は
 (setq ps-multibyte-buffer 'non-latin-printer)
などとしておく。詳しくはps-mule.elを参照。

ps-lpr-commandをカラにして、ps-printer-nameにファイル名を指定すると、
 M-x ps-print-buffer-with-faces
でファイルを作ってくれるようだ。やっつけで
 (setq hiroitoh-gsview-dir "C:/Program Files/Ghostgum/gsview/")
 (setq hiroitoh-gsview-executable (concat hiroitoh-gsview-dir "gsview32.exe"))
 (setq hiroitoh-gsview-tempps (concat hiroitoh-gsview-dir "temp.ps"))
 
 (setq ps-print-color-p t
       ps-lpr-command ""
       ps-lpr-switches '("-sDEVICE=mswinpr2" "-dNOPAUSE" "-dBATCH")
       ps-printer-name hiroitoh-gsview-tempps
       ps-paper-type 'a4
       ps-multibyte-buffer 'non-latin-printer)
 
 (defun hiroitoh-print-buffer () (interactive)
   (ps-print-buffer-with-faces)
   (call-process hiroitoh-gsview-executable nil 0 nil hiroitoh-gsview-tempps)
 )
なんて書いてみた(初めてのLispプログラミング!)ら、ちゃんと動いてしまったようだ。


**iswitchb [#t5de893d]
バッファの俯瞰ができる。
-[[YEDO.COM - PukiWiki - NTEmacs/iswitchbを使う:http://www.yedo.com/modules/pukiwiki/index.php?%5B%5BNTEmacs%2Fiswitchb%A4%F2%BB%C8%A4%A6%5D%5D]]

*キーバインド [#l9e590ba]

**ファイル操作 [#j40641e2]
 C-x C-f     開く
 C-x C-r     読みとり専用で開く
 C-x C-s     上書き保存
 C-x C-w     別名で保存
 C-x C-c     emacsの終了

**カーソル・文字操作 [#rebaf805]
 C-f      前へ
 C-b      後へ
 C-p      上へ
 C-n      下へ
 C-a      行頭へ
 C-e      行末へ
 M->      ファイル末尾へ
 M-<      ファイル先頭へ
 M-a      文頭へ
 M-e      文末へ
 C-s      検索
 M-%      置換
 M-x      query-replace-regexp 正規表現による文字列の置換
 C-x i    カーソル位置にファイル挿入
 M-l      ポイントに続く単語を小文字に
 M-u      ポイントに続く単語を大文字に
 M-c      ポイントに続く単語を大文字で始める
 C-x C-l  選択した領域を小文字に
 C-x C-u  選択した領域を大文字に
 (.emacsによって C-h をbackspaceに割り当てる人が多い)

**ウィンドウ、フレーム [#ec54d5a3]
 C-x 2     ウィンドウ横分割
 C-x 3     ウィンドウ縦分割
 C-x o     他のウィンドウへ移動
 C-x 0     現在のウィンドウ消去
 C-x 1     他のウィンドウ消去
 C-x ^     ウィンドウを高く
 C-x }     ウィンドウ幅を広く
 C-x {     ウィンドウ幅を狭く
 C-M-v     別ウィンドウのスクロール
 C-x 5 2   別フレームを開く
 C-x 5 f   別フレームでファイルを開く
 C-x 5 b   別フレームでバッファを開く
 C-x 5 0   フレームを閉じる

**領域操作 [#w874d032]

 C-w     キル(カット)
 C-y     ヤンク(ペースト)
 M-y     "C-y"の後に使うと、以前キルしたリージョンをヤンクできる
 M-w     コピー

 
複数の領域のペーストを何度も使い回したいときは、レジスタを使うのが便利です。アルファベット1文字で指定されるレジスタ名に領域を保持することができます。
 C-x x REGISTER      領域を指定されたREGISTERにコピー
 C-x g REGISTER      指定されたREGISTERをペースト
 C-x r r REGISTER    領域を指定されたREGISTERに矩形でコピー
 
**矩形編集 [#lc0cddd4]
 テキストを「表」とみなして編集できます。便利です。
 C-x r k         矩形切り取り
 C-x r y         矩形貼り付け
 C-x r c         矩形クリア
 C-x r d         矩形削除
 C-x r o         矩形空白挿入
 C-x r t STRING  各行のrectangle regionにSTRINGを挿入する.

**バッファ操作 [#g7a8caee]
 C-x C-b    バッファのリスト表示
 C-x b      バッファ間移動
 M-n        次のバッファへ
 M-p        前のバッファへ

**YaTeX [#rfbcb1c1]
 C-c b space  begin型補完
 C-c B space  既存の箇所のbegin型補完
 C-c e        endの補完
 C-c s        section型補完
 C-c S        既存の箇所のsection型補完
 C-c l        large型補完
 C-c L        既存の箇所のlarge型補完
 C-c m        maketitle型補完
 C-c a        アクセント記号補完
 ;           数式記号補完
 ; TAB       数式記号補完の一覧
 :           ギリシャ文字補完
 : TAB       ギリシャ文字補完の一覧
 C-c tj       compile
 C-c tp       preview
 C-c '        エラー箇所にジャンプ
 C-c (        label作成
 C-c )        ref作成
 C-c g        対応するlabel <-> ref 間にジャンプ(labelとrefに限らない)
 C-c k        section型命令で、命令文だけ消せる

tabular[*], array, itemize, enumerate, tabbing 環境をbegin型補完で入力した時、または各環境内では次のものが有効です。
 ESC RET ... おまかせ改行。その環境に応じた行エントリを次の行に挿入する
 
YaTeXと直接関係ありませんが、reftex-modeというのが文献引用に役立ちます。こちらの[[BibTeX と bibtex-mode, reftex-mode の使い方:http://www.fan.gr.jp/~ring/doc/bibtex.html]]に詳しく解説されています。
 C-c [   citeコマンドの挿入
 
YaTeXの知らない補完を行う時は、ホームディレクトリの.yatexrcに
 (setq user-section-table '(
 ("DD" 2)
 ))

などと記述すれば覚えてくれます。(この例はsection型)「2」というのは引数の数です。微分dy/dxを表すコマンド\DD{y}{x}を
 \newcommand{\DD}[2]{\frac{\mathrm{d}#1}{\mathrm{d}#2}}
の様に作った時、上の記述を.yatexrcに加えると便利です。
 
**FORTRANモード [#n6ef6649]
 C-c C-r   ルーラーの表示
 C-c C-w   幅72文字のウィンドウ表示
 C-M-a     副プログラムの先頭へ
 C-M-e     副プログラムの末尾へ
 C-c C-n   現在か次の文の先頭へ
 C-c C-p   現在か次の文の末尾へ

**w3m [#kc327993]
 g,U         指定したURIへ
 B           戻る
 a           ブックマークに追加
 v           ブックマークを閲覧
 M           外部ブラウザで見る
 R           リロード
 C-c C-c     フォーム送信
 C-c C-t     バッファをコピー、タブ生成
 C-c C-n,p   タブ切り替え
 C-c C-w     タブ消去
 SHIFT RET   新しいタブで開く
 TAB         次のリンクへ
 M-TAB       前のリンクへ

**Outline minor mode [#wd96d9ee]
PREFIX(defaultは C-c @)の後に下記を入力する。色々種類があるが、個人的には以下で十分
 C-e   見せる
 C-c   隠す
 C-t   bodyを隠す
 C-a   全て見せる

**動的略語展開 [#c4d3fc35]
要はキーワード補完がです。
 M-/ 文字列の補完

**Diredモード [#s58a99b4]
ファイラです。操作は[[dired/dired-x:http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs21/dired.html]]
[[A Leafy Tree:http://www.math.s.chiba-u.ac.jp/~matsu/index-j.html]]より)にまとめられています。
 C-x d   Diredモード

**文字、改行コード [#qe54bcef]
バッファ内を変更するには以下のようにします。
 C-x RET f     バッファ内の文字、改行コード変更

なお、モード行表記の意味は以下の通り。
 E ...... EUC
 J ...... JIS
 S ...... Shift JIS
 nil .... たぶんASCII
 : ...... unix 改行コード
 (DOS)... dos
 (Mac)... Mac

**その他 [#aa6921d9]
 F1-m     describe-mode 現在のモードの説明
 F1-b     describe-bindings 現在のキーバインドの説明
 F1-v     describe-variable こうして、major-modeとタイプすると現在のモード名がわかる
 C-u M-x info  こうしてinfoファイルを直接呼びだして読める。
 C-c C-r           シェルモードで、最後に実行したコマンドへ移動
 C-c C-y           シェルモードで、最後に実行したコマンドを貼り付ける
 M-(num) (command) 数引数を指定した上でコマンド実行
 C-x u  アンドゥ
 C-/    アンドゥ