Debianで始めるEmacsエディタ 木下達也 - GNU Emacsとは GNU Emacsは、拡張・カスタマイズが可能なテキスト エディタです。 * 特徴 - 複数の「バッファ」それぞれに応じた「モード」 - キー割り当てのカスタマイズ ([Ctrl]+x, [Esc], ...) - Emacs Lisp (Elisp)プログラミングによる拡張 その柔軟性は、文書作成、コーディングという用途 に留まらず、メール送受信、ウェブブラウズなども こなせるほどです。 GNUシステムの構成要素として1984年から開発が始まり、 現在もなお愛され続けています。 * 歴史 1984 GNUプロジェクト開始、GNU Emacs開発開始 1987 Nemacs 1.1 (Emacs 18.47) 1991 Linuxカーネル開発開始 1992 Mule 0.9.0 Beta 1993 Debianプロジェクト開始 1994 Mule 1.1 (Emacs 18.59)、Mule 2.0 (Emacs 19.25) 1995 Mule 2.3 (Emacs 19.28) 1996 Emacs、XEmacsへMule統合 1997 Emacs 20.1 (MULE 3.0)、XEmacs 20.0 1998 Emacs 20.3 (MULE 4.0)、XEmacs 20.4 1999 Emacs 20.4 (MULE 4.0)、XEmacs 21.0.67 2000 Emacs 20.7 (MULE 4.0) 2001 Emacs 21.1 (MULE 5.0)、XEmacs 21.4.0 2002 Emacs anonymous CVS公開 2005 Emacs 21.4 (MULE 5.0) 2007 Emacs 22.1 (MULE 5.0) 2008 Emacs 22.2 (MULE 5.0) - Emacsのインストール * emacsパッケージ Debianでは「emacs」パッケージをインストールすれば、 Debian標準のEmacsパッケージがインストールされます。 etch: emacs21 lenny: emacs22 * -noxパッケージ X Window Systemのサポート無し。端末でのみ利用。 インストールサイズが小さくて済みます。 etch: emacs21-nox lenny: emacs22-nox * -elパッケージ Emacs Lispソースファイル。ヘルプから参照できます。 etch: emacs21-el lenny: emacs22-el * -non-dfsgパッケージ マニュアル等、変更不可部分を含むnon-freeパッケージ。 etch: emacs21-common-non-dfsg lenny: emacs22-common-non-dfsg (文書がnon-free「ソフトウェア」に分類されてしまって いるのが現状です) * Unicode日本語対応 emacs21では、Unicode (UTF-8)日本語対応のためには、 要mule-ucsパッケージ。 (emacs22ではmule-ucs無しでも対応) 設定ファイルのサンプル: /usr/share/doc/mule-ucs/examples/dot.emacs.ja 注: - mule-ucsを有効にする際には、やや時間がかかります。 - ~/.emacs自身はUTF-8にしないように。 ~/.emacsの1行目は下記のように。 ;;; .emacs -*-mode: emacs-lisp; coding: iso-2022-jp;-*- - ~/.emacs読み込み前に環境変数でmule-ucsを有効に する方法もあります。 (/usr/share/doc/mule-ucs/README.Debianを参照) - Emacsの利用法 * 起動方法 emacs 通常起動 emacs -nw 端末内で起動 emacs -q ~/.emacsを読まずに起動 emacs -q -no-site-file startupファイルを読まずに起動 (emacs22なら-Qでも可) * キーボード操作 C-x Ctrlキーを押しながらx M-x ESCを押してからx (またはAltキーを押しながらx) ESC EscキーまたはC-[ TAB TabキーまたはC-i (字下げや補完) RET EnterキーまたはC-m (改行と同時に字下げはC-j) DEL Back spaceキー SPC スペースキー C-x C-c Emacsを終了 C-p 上へ C-n 下へ C-b 左へ C-f 右へ C-a 行頭へ C-e 行末へ DEL 手前1文字を削除(C-hはデフォルトではhelp-command) C-d 1文字を削除 C-k 行末まで削除 C-o 行末までを次の行へ (改行を挿入、位置はそのまま) C-v 次ページへ M-v 前ページへ M-< 先頭へ M-> 末尾へ C-s 前方検索 C-r 後方検索 (M-付きで正規表現) M-% 置換 (C-付きで正規表現) C-SPC マーク C-w カット M-w コピー C-y ペースト C-x C-f ファイルを読み込む C-x C-s ファイルを保存 C-x i 現在位置にファイルの内容を挿入 C-x C-w 別ファイルへ保存 C-x RET f 現在のバッファのcoding system設定 C-x RET c 次に実行するコマンドのcoding system設定 C-x b バッファ移動 C-x k バッファ削除 C-x C-b バッファ一覧 C-x o 他のウィンドウへ移動 C-x 3 ウィンドウ分割(横に2画面) C-x 2 ウィンドウ分割(縦に2画面) C-x 1 他のウィンドウを削除 C-x 0 現在のウィンドウを削除 C-g 処理を中断 C-x u Undo C-l 現在行を中央にして再表示 C-x ( キーボードマクロ記録開始 C-x ) キーボードマクロ記録終了 C-x e キーボードマクロ実行 M-x コマンド実行(Lisp関数を呼び出し) M-: ミニバッファで入力してLisp式を評価 C-x C-e 手前のLisp式を評価(*scratch*ではC-jで評価・表示) M-! 外部コマンド実行(C-u付きで出力を現在位置へ挿入) M-x help RET ヘルプ M-x info RET マニュアル M-x apropos RET 関数、変数等の名前を検索 * カスタマイズ例 (global-set-key "\C-h" 'delete-backward-char) (global-set-key "\C-ch" 'help-command) (global-set-key "\C-z" 'scroll-down) (global-set-key "\C-cg" 'goto-line) (if (locate-library "iswitchb") (require 'iswitchb)) (if (fboundp 'iswitchb-default-keybindings) (iswitchb-default-keybindings)) (global-set-key "\C-cb" 'switch-to-buffer) (setq visible-bell t) (setq inhibit-startup-message t) (if (fboundp 'menu-bar-mode) (menu-bar-mode -1)) (if (fboundp 'tool-bar-mode) (tool-bar-mode -1)) (if (fboundp 'auto-compression-mode) (auto-compression-mode 1)) - add-onパッケージ Emacs標準の機能だけでなく、さらに追加できる Emacs Lispパッケージがたくさんあります。 * 2008-05-13時点のDebian sidで、usr/share/emacsを 含むパッケージ # apt-file update $ apt-file search usr/share/emacs > emacsfiles $ cat emacsfiles | awk '{print $1}' | sort -u | cat -n 1 a2ps: 2 acl2-emacs: 3 ada-mode: [...] 257 yc-el: 258 yorick-data: 259 zenirc: * 個人的なお勧め・注目パッケージ - メールクライアント: mew, mew-beta, wl, wl-beta - 引用ツール: mu-cite - スケジュール管理: mhc, planner-el - ウェブブラウザ: w3m-el, w3m-el-snapshot - 日本語入力: ddskk, prime-el - 辞書検索: lookup-el - ローマ字での日本語検索: migemo - 編集支援: muse-el, auctex, yatex - emacsenパッケージ * Debian sidに現時点で存在するemacsenパッケージ - emacs22 (emacs22, emacs22-gtk, emacs22-nox) - emacs21 (emacs21, emacs21-nox) - xemacs21 (xemacs21-mule, xemacs21-mule-canna-wnn, xemacs21-gnome-mule, xemacs21-gnome-mule-canna-wnn, xemacs21-nomule, xemacs21-gnome-nomule) * CVS版 Emacs 23.0.60 (MULE 6.0) 非公式Debianパッケージ emacs-snapshot http://emacs.orebokech.com/ Emacs Lisp add-onパッケージでは、emacsenそれぞれに 応じた処理(バイトコンパイル等)はインストール時に実施 されるので、パッケージはほぼ共通のものが使えます。 - 参考 GNU Emacs http://www.gnu.org/software/emacs/ http://www.gnu.org/gnu/gnu.html Emacs 電子書棚 (日本語マニュアル等) http://www.bookshelf.jp/ Emacs - ウィキペディア http://ja.wikipedia.org/wiki/Emacs SKK の歴史 http://openlab.jp/skk/history-ja.html Linux の歴史 http://www.linux.or.jp/JF/JFdocs/linux-history/ Debian 小史 http://www.debian.org/doc/manuals/project-history/ Make good things! Happy hacking! Author: Tatsuya Kinoshita Unlimited permission is granted to use, copy, distribute and/or modify this document. There is NO WARRANTY.