紹介 *

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

link *

入手 *

使用法など *

外部パッケージ *

などを私は使っています。標準でついてくるライブラリも色々あって、例えばStandard Elisp Librariesなんかが参考になります。

Meadow *

先程述べたように、Windows環境でEmacsを使用するためにはMeadowという選択肢が何かと便利です。ですが、Windows環境とUNIX環境の狭間で困ることが幾つかあります。私の場合migemoと印刷に苦労した覚えがあります。migemoに関してはこちらの「migemo」というページを、印刷に関しては川又研究室knowhow集を参考にさせてもらいました。

設定その他 *

ecb *

ECB - Emacs Code Browserなのだそうで、スクリーンショットが派手。いじりたいが時間がない。

speedbar *

speedbarでツリー表示ができるみたい。いじりたいが時間がない。とりあえず

(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まわり *

http://wiki.gohome.org/teranisi/?EmacsOnWindows

face *

文脈の機能に応じて色分けが可能。

list-faces-display

で閲覧

印刷 *

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 *

バッファの俯瞰ができる。

キーバインド *

ファイル操作 *

C-x C-f     開く
C-x C-r     読みとり専用で開く
C-x C-s     上書き保存
C-x C-w     別名で保存
C-x C-c     emacsの終了

カーソル・文字操作 *

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に割り当てる人が多い)

ウィンドウ、フレーム *

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   フレームを閉じる

領域操作 *

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に矩形でコピー

矩形編集 *

テキストを「表」とみなして編集できます。便利です。
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を挿入する.

バッファ操作 *

C-x C-b    バッファのリスト表示
C-x b      バッファ間移動
M-n        次のバッファへ
M-p        前のバッファへ

YaTeX *

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 間にジャンプ

tabular[*], array, itemize, enumerate, tabbing 環境をbegin型補完で入力した時、または各環境内では次のものが有効です。

ESC RET ... おまかせ改行。その環境に応じた行エントリを次の行に挿入する

YaTeXと直接関係ありませんが、reftex-modeというのが文献引用に役立ちます。こちらのBibTeX と bibtex-mode, reftex-mode の使い方に詳しく解説されています。

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モード *

C-c C-r   ルーラーの表示
C-c C-w   幅72文字のウィンドウ表示
C-M-a     副プログラムの先頭へ
C-M-e     副プログラムの末尾へ
C-c C-n   現在か次の文の先頭へ
C-c C-p   現在か次の文の末尾へ

w3m *

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 *

PREFIX(defaultは C-c @)の後に、

C-l   「葉」を隠す
C-e   見せる
C-c   隠す
C-d   下位構造を隠す
C-t   他を隠す
C-a   全て見せる

動的略語展開 *

要はキーワード補完がです。

M-/ 文字列の補完

Diredモード *

ファイラです。操作はdired/dired-x A Leafy Treeより)にまとめられています。

C-x d   Diredモード

文字、改行コード *

バッファ内を変更するには以下のようにします。

C-x RET f     バッファ内の文字、改行コード変更

なお、モード行表記の意味は以下の通り。

E ...... EUC
J ...... JIS
S ...... Shift JIS
nil .... たぶんASCII
: ...... unix 改行コード
(DOS)... dos
(Mac)... Mac

その他 *

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) 数引数を指定した上でコマンド実行