[紹介マニアTop]

Powered by SmartDoc

Emacs21 on Mac入門から中毒まで

最新情報は MacEmacs JP Projectを参照してください。

2005/07/31
$Author: sakito $

Emacs21の初めての利用から使いこなしまでの解説。

Emacsをまったくしらない場合はJFの文章であるEmacs Beginner's HOWTOを一読しておくと良いです。

Mac OS X専用文書

以下でMac Emacsのメーリングリストを運営しています。Mac上でEmacsを利用している方は加入してみてください。
http://lists.sourceforge.jp/mailman/listinfo/macemacsjp-users

目次

Emacs21導入

Emacsとは何か

詳細に関しては以下を参照してください。この文章ではEmacsその物に関してはある程度知っている前提で記述している部分が存在しますが御了承ください。

Emacs Beginner's HOWTO

Emacs for Macメモ

開発者に関して

Emacsそのものは多数の方によって開発されています。

Emacs21 for Mac OS Xの最大の貢献者および開発の中心いるのはAndrew Choi氏です。

以下がAndrew Choi氏のサイトとなります。FAQなどの文章があり非常に有益です。(英語です) http:///members.shaw.ca/akochoi-emacs/

ソースからのインストール

ソースからインストールする場合、DeveloperToolsが必要になります。インストール済みである事を前提とします。

最新のEmacs21はhttp://savannah.gnu.org/projects/emacs/にてCVS(Concurrent Versions System)を利用してで開発されています。

これは安定したバージョンではありませんので、本来は新し物が好きである人や、人柱精神にあふれる人のみ利用が推奨される物ですが、現状のCarbon EmacsはCVS版の導入がもっとも安定しています。

ただし、開発版であるためなんらかの問題が発生してもだれも責任とってくれませんので自己責任でのインストールをおねがいします。

ではここより最新版の取得およびインストール方法を記述します。

まず、Emacs21CVS版のインストールにはtexinfoの最新版が必要になります。

/Application/Utilities/Terminalをダブルクリックして起動してください。

Terminalの起動

Terminalより

バージョン確認
makeinfo --version            # これを打ちます
makeinfo (GNU texinfo) 4.2    # これは4.2以上である事が推奨です。

と出る事を確認してください。

もし最新版でない場合はhttp://texinfo.org/よりtexinfoをあらかじめ取得しておいてください。

ソースはどこでもいいのですが説明の便宜上$HOME/src以下にすべて置く事として説明を記述します。

Terminalを起動します。(xはバージョン番号)

texinfoインストール
cd ~/src
tar xvfz texinfo-x.x.tar.gz
(解凍される)
cd texinfo-x.x
./configure
make
sudo make install

この場合texinfoは/usr/local/bin以下にインストールされます。Emacs21コンパイル前にあらかじめパスをとおすなどしておいてください。

Terminal上での作業を継続します。

Emacs21CVS版の取得
(ダウンロードする場所に移動します。例:cd ~/src)
export CVS_RSH="ssh"
cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/emacs co emacs
(Emacs21のソースを取得しますので時間がかかります。。。)
cd emacs
./configure  --without-x --with carbon
(ほかオプションは./configure  --helpで)
make bootstrap
sudo make install
password:    (管理者パスワードを入力。表示はされません)

CVSで作成されたemacs/macフォルダの中にEmacsというアプリケーションができます。これを、任意の場所(普通は/Applications以下)にコピーしておくとよいでしょう。

またEmacsの本体は/usr/local/bin/emacsとしてインストールされます。パスを通すようにしてください。

CVS版は開発者バージョンである事を常にわすれないでください。

Segmentation faultへの対処

メーリングリスト内において、make bootstrap時にSegmentation faultでおちるとの報告がありました。

広松様の回答で以下のようにすれば解決するそうです。

Segmentation faultへの対処
Makefile の 270,271 行目を以下のように修正
オリジナル
bootstrap-lisp:
	(cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs)
変更後
bootstrap-lisp:
	(cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=/usr/local/bin/emacs)

ただし/usr/local/bin/emacsにあらかじめEmacsを用意する必要があるとの事です。

コンパイル中にエラーメッセージが出る事がありますが、コンパイルが停止しないならほとんどの場合気にする事はないでしょう。

trampのmakeinfoが失敗する場合はtexinfoのバージョンが古いのが原因です。最新にしてください。

もしどうしてもわからなかったらメーリングリストやMac de Emacs総合スレ(2ch.net)におきがるに投稿ください。

バイナリインストール

Emacs21CVS版のバイナリは以下より入手可能です。

ぼくが作成したMac OS X 10.1.x用バイナリ(2002.07.28版)。やや古いため。あまりおすすめしません。

http:///www.egroups.co.jp/files/macemacsen/EmacsInstaller.dmg.gz

瀬戸様より以下より入手可能である事をおしえていただきました。

http://www.esm.psu.edu/mac-tex/EmacsInstaller.dmg.gz

こちらはぼくの作成パッケージよりあたらしいようです。(10.2.xに対応しているようですが確認が完全ではないです)

dmgをダブルクリックすればおなじみのパッケージが入っています。インストール手順は説明は不要だと思います。

上記のパッケージはどれもCVS版における既知のバグはほぼ修正していません。

実質CVSよりのインストールとあまり変りませんので自己責任でおねがいします。

Finkでのインストール

Finkでもインストールが可能です。

fink install emacs-carbon

unstableなのでfink.confの設定をわすれずにおこなってください。

/sw/Applications/Emacs.app

としてインストールされます。

またleimはぼくがインストールした時はいっていなかったので、必要ならば入手してインストールしてください。

起動確認

Emacsアプリケーションをダブルクリックで起動します。

Emacs21起動

起動したでしょうか?

起動を確認したら一度とめておく方がよいです。

キー操作がわからない場合は、「Emacsメニュー」から「Quit Emacs」を選択すればとめる事が可能です。

現在ことえりその他によるインライン入力には対応していません。

初期設定

パスの設定

Mac OS Xには最初からTerminal上でしか動作しないEmacsがインストールされています。Terminalから利用しようとするとこの最初からインストールされているEmacsが優先的に動作してしまいます。

これを防ぐためにパスを設定する必要があります。

Terminalから以下をうってください。

cd $HOME
ls .tcshrc     #これを打ってNo such file or directoryと出たら以下を打ちます

# ソースからインストールした場合
echo "set path=(/usr/local/bin $PATH)"  > .tcshrc

# finkでインストールした場合
echo "set path=(/sw/bin $PATH)"  > .tcshrc

Terminalを再起動してください。

which emacs              #これを打つ
/usr/local/bin/emacs     #こういう結果が出たら成功

パスの概念はUnixの基礎ですので、他のUnix解説サイトなどで上記の意味を確認しておくとよいでしょう。

設定ファイル.emacs.el

emacsでは初期設定をテキストファイルで行ないます。この設定ファイルが「.emacs.el」です。

これを作成する場所は$HOMEの直下におきます。

ただし、Mac OS Xでは、頭に「.」が付くファイルは初期設定で隠しファイルになっているので直接作成できない事と、ファインダーからは見えない事に注意してください。

.emacs.elの作成はいろんな方法があります。最も簡単なのはTerminalで作成する方法です。

echo "(set-language-environment 'Japanese)"  > .emacs.el

始めて.emacs.elを作成する場合はこれだけです。

すでに.emacs.elがある場合は>>にすると追加書き込みになります。

最低限の設定

最低限の設定は以下です。

(set-language-environment 'Japanese)

これで日本語の使用できるようになります。

もしこれをemacsで作成する場合は

C-x C-f ~/.emacs.el
(編集作業)
C-x C-s
M-x load-file<RET>
.emacs.el

ことえり、ATOK、EGBRIDGEで入力し、またカットペーストに対応する場合は

(set-keyboard-coding-system 'sjis-mac)
(set-clipboard-coding-system 'sjis-mac)

の記述を.emacs.elに追加してください。

ただしインライン入力が設定しないとできませんし、一部不安定な部分もあるので、SKKとかを入れる方がいいでしょう。

その他の設定

もし、.emacs.elをファインダーで見たい場合は以下のような方法があります。

.emacs.elに以下のように書きます。

(load "~/etc/emacs21.el")

"~/etc/emacs21.el"の部分は任意のファイル名にしてください。

これで$HOME/etc/emacs21.elというファイルが読み込まれます。

参考にぼくのemacs21.elをおいておきます。

Terminal上での利用

emacs -nw

EmacsはTerminal上からの利用も可能です。

emacs -nw

だけです。

ただし10.1.x標準のTerminal.appでは日本語が入力できません。また10.2.xのTerminalでは時々不安定になる事があります。

もしどうしても標準Terminalで問題があるようでしたら。JTerminalを利用してください。

JTerminal上で日本語を入力したい場合は以下を.emacs.elに書いてください。

(set-terminal-coding-system 'euc-jp)

JTerminalでの利用

カラー対応JTerminalで背景を透過させてemacs -nwすると以下のようになります。

JTerminal上でのEmacs

JTerminal.appを利用する場合注意する点は、コマンドキーがJTerminal.appのショートカットprefixになっている事です。このため、コマンドキーをメタとしている場合はM-xなどのキーが効きません。メタを別のキーに割り当てるなどで対処するしかありません。

Emacs操作

操作チュートリアル

まったくEmacsを利用した事がない始めての場合はcontrolキーを押下しながらhを押下した後tを押下してください。設定が日本語になっていれば日本語の操作チュートリアルが開始されます。

これを一通りやっておかないと以後の説明が理解できないと思います。

ショートカット

以下で、ショートカットをまとめておきます。CはControlキー(鉛筆キー)、MはMetaキー(ESCキー、設定によりCommandキー、optionキー、などにできます)、<RET>はリターンキー、<SPC>はスペースキーの意味です。

ショートカット
ファイル
新規作成 C-x C-f  (作成ファイル名入力)
開く C-x C-f  (ファイル名入力)
閉じる C-x k  (閉じないかぎり開いたまま)
ファイル切り替え C-x b  (正確ではない、bufferの切り替え)
開いてるファイル一覧 C-x C-b  (正確ではない、bufferの一覧)
同じフォルダのテキスト C-x C-d  (M-x diredと同じ)
保存 C-x C-s
別名で保存 C-x C-w
コマンド停止 C-g  (コマンドを間違えた場合等)
emacsの一時停止 C-z
終了 C-x C-c
編集
マーク C-<SPC>もしくはC-@
アンドゥー C-x u または C-/,C-_
カット C-w
コピー M-w
ペースト(ヤンク) C-y  (ペーストっていわないでヤンク)
ヤンクポップ M-y (以前にコピーした物をヤンク)
全て選択 C-x h
1文字前削除 DEL
カーソル選択文字削除 C-d
カーソル位置から一単語削除 M-d
カーソル位置から行末まで削除 C-k
選択部分をインデント M-C-\
文字コード変換 C-x<RET>f
移動・ジャンプ
右へ移動 C-f  (forward)
左へ移動 C-b  (backward)
下へ移動 C-n  (next)
上へ移動 C-p  (previous)
選択行を画面中心へ C-l  (エル、本当は画面再描画)
一画面下へ C-v
一画面上へ M-v
行頭へ C-a
行末へ C-e
前区切りへ M-a  (英語はピリオド、日本語は。が区切り)
次区切りへ M-e  (英語はピリオド、日本語は。が区切り)
文頭へ M-<  (Shiftを押しながらになる)
文末へ M->  (Shiftを押しながらになる)
指定行に移動 M-x goto-line<RET>行番号
指定分繰り返す C-u数字コマンド(C-u 8 C-nで8行移動)
検索
順方向逐次検索 C-s  (文字を打つごとに文字先頭検索)
逆方向逐次検索 C-r  (文字を打つごとに文字後方検索)
順方向単純検索 C-s<RET>検索文字列(文字列で検索)
逆方向単純検索 C-r<RET>検索文字列(文字列で検索)
順方向単語検索 C-s<RET>C-w検索単語(単語で検索)
逆方向単語検索 C-r<RET>C-w検索単語(単語で検索)
正規表現による順方向検索 M-C-s
正規表現による逆方向検索 M-C-r
順に次を検索 検索中にC-s
逆に次を検索 検索中にC-r
置換
選択部分の大文字を小文字に置換 C-x C-u
選択部分の小文字を大文字に置換 C-x C-l (エル)
カーソルから一単語大文字を小文字に置換 M-u
カーソルから一単語の小文字を大文字に置換 M-l (エル)
カーソルの直前文字を直後に移動 C-t
カーソルの直後文字を直前に移動 M-t
確認置換 M-%<RET>置換前<RET>置換後<RET>
確認正規表現置換 C-M-%<RET>置換前<RET>置換後<RET>
無確認置換 M-x replace-string<RET>置換前<RET>置換後<RET>
確認正規表現置換 M-x replace-regexp<RET>置換前<RET>置換後<RET>
ウィンドウ
上下に分割 C-x 2
左右に分割 C-x 3
選択画面のみ表示 C-x 1
選択画面を消す C-x 0  (ゼロです)
画面移動 C-x o  (オーです)
新規ウィンドウ作成 C-x 5 2
選択ウィンドウのみ C-x 5 0  (ゼロです)
画面再描画 C-l  (エル、まれに画面が変になるので)
そのほか
選択フォルダ内容を表示 M-x dired<RET>
フォルダ間の移動 M-x cd<RET>移動先入力<RET>
ヘルプ
チュートリアル C-h t
コマンドリスト C-h a
キー割当て表 C-h b
キーに対するコマンド C-h c  (キーを押す)
キーに対するコマンド(詳細版) C-h k  (キーを押す)
現在動作しているメジャーモード情報 C-h m
elisp変数説明 C-h v
elisp関数説明 C-h f
info内の文字列検索 C-h C-k
info内の関数説明検索 C-h C-f
入力文字履歴100文字分 C-h l
項目から説明を見つける C-h p
Emacsの変更履歴文書 C-h n
GNU GENERAL PUBLIC LICENS ver2表示 C-h C-c
Emacs新バージョン入手法に関して C-h C-d
GNUプロジェクトに関して C-h C-p
チュートリアル C-h t

とりあえず使用してみると動作がわかるかと思います。

ほかにもたくさん便利な物があります。M-x describe-bindings<RET>でみてください。大量すぎて読みきれませんが(^_^;

また「調らべたいキー+ C-h」すると機能を調査できます。

C-5 C-h

以上のようにすればフレーム移動系の操作を調る事が可能です。

正規表現

検索や置換に於て、「正規表現」という単語がでてきます。ワイルドカードなどと呼称される場合もあるようですが、使いこなすとかなり便利です。

Emacs正規表現
. (ピリオド) 改行以外の任意の一文字
* 直前の正規表現の0回以上の繰り返し
+ 直前の正規表現の1回以上の繰り返し
? 直前の正規表現の0or1回以上の繰り返し
[文字集合] 文字集合のいずれか一文字
[^文字集合] 文字集合以外のいずれか一文字
^ 行頭
$ 行末
\ 特殊文字のエスケープ

正規表現が始めての場合この説明では意味不明でしょうから、いくつか例をしめします。

ちなみにここでは△で空白を示すことにします。

""でかこまれた文字の検索
M-C-s \"[^\"]*\"
全行頭に>をつける
M-x replace-regexp ^<RET>>△<RET>
行末に<br>挿入
M-x replace-regexp $<RET><br>$<RET>

例ってつくるの難しい。。あとでまとめます。

カスタマイズ

自分好みのEmacs

動作や表示のカスタマイズは.emacs.elにておこないます。初期設定の章で説明しなかった、.emacs.elの内容に関して説明を行ないます。

やはりEmacsの醍醐味というのは完全に自分だけの物にできるという点にあるとおもいます。

徹底的にカスタマイズするのもおもしろい物です。

設定のための最低限のElisp

.emacs.elはEmacs Lisp(Eisp)によって記述します。最低限の知識は必要になります。

とりあえず簡易な文法だけ記述します。

変数の設定
(setq 変数 値)

変数において、Yes/Noの場合はt/nil(正確にはnon-nilならばtとなる)の設定になります。

条件分岐if
(if 条件
    正なら
    偽なら)
式をまとめる
(progn 'g1 'g2 'g3.......)
条件分岐cond
(cond
     (条件1 式)
     (条件2 式)
     ........
     .......
)

まじめにやるならEmacs Lisp によるプログラミングや、GNU Emacs Lisp Reference Manualをよんでください。

設定の確認

記述した.emacs.elの設定確認をする場合、

全体の評価
M-x eval-current-buffer
選択部分評価
M-x eval-region

で確認できます。

エラーがある部分がエコーエリアに表示されますので、その部分を修正してください。

フォントの設定

フォントの設定はむずかしいです。

まずは現在設定されているフォントを見てみます。

現在の設定
M-x list-faces-display

と打ってみてください。asciiの設定と割りあてられている色が確認できます。

日本語やその他の言語の現在のフォントを確認する場合は

多言語フォント表示確認
C-h h
もしくは
M-x help<RET>h

四角(豆腐表示)になっている物は現在システム上にフォントが存在しない物です。

では現在利用できるフォントの一覧を表示してみます。

フォント一覧
(insert (prin1-to-string (x-list-fonts "*")))

とscratchバッファーに記述し、C-j(もしくはC-x C-e)すると利用可能なフォントの一覧が表示されます。

フォントの例
-apple-osaka-medium-r-normal--16-160-75-75-m-160-jisx0208.1983-sjis

のような表示になります。

この表示に関して簡易に説明します。

この表示をXLFD(論理フォント名)といいます。The X Logical Font Description (XLFD)などいくつかの場所に仕様書が存在します。

本来すべてフォントはこのようなXLFDを持っていますがわかりずらい事もあり、WinやMacの環境では隠蔽されています。

XLFDはダッシュに区切られ、15項目によって成立しています。

(1)-(2)-(3)-(4)-(5)-(6)-(7)-(8)-(9)-(10)-(11)-(12)-(13)-(14)-(15)

XLFDを構成する要素それぞれは以下のような意味になります。

(1)FontNameRegistry
通常は何もない。そのため多くのフォントのXLFDがダッシュ(-)から始まるように見える。
(2)Foundry
作成者。appleなどフォントを作成した会社の名前になります。元のフォントにうまく設定されていないとMac環境ではappleで代替される場合があります。
(3)FamilyName
フォントの商標名。よく見るフォント名はここから来ています。
(4)WeightName
フォントの太さです。thin, extralight, light, normal, medium, semibold, demibold, bold, extrabold, heavyが存在します。
(5)Slant
文字傾斜の指定です。rはroman、iはイタリックなどです。
(6)SetwidthName
フォントの1ユニット当たりの幅。おそらくnormal以外Mac環境では見る事はないでしょう。
(7)AddStyleName
フォントを一意にするために付加される場合があるが通常は何もない。そのためピクセルの設定の直前にダッシュが二つ(--)になるため区切のように見える事もあります。
(8)PixelSize

フォントのピクセル値によるサイズ。普段ポイントを多用するはずなのであまり馴染がないかもしれません。ピクセルは相対的な値で、dpi(解像度)が変化すると多きさが変化します。

0が指定されているフォントはスケーラブルフォント(サイズは計算で任意)になります。

(9)PointSize
だいたいはPixelSize × 10です。スケーラブルフォントは0。
(10)ResolutionX
X軸方向の解像度
(11)ResolutionY
Y軸方向の解像度
(12)Spacing
フォント中のユニット間の間隔。Mが固定ピッチ(等幅)フォント、Pが可変ピッチ(プロポーショナル)フォントになります。
(13)AverageWidth
フォントの平均幅。だいたいはPixelSize × 10です。スケーラブルフォントは0。
(14)CharSetRegistry
仕様上はフォント登録組織。ただ通常jisx0208.1983などのそのフォントがどの仕様に基づいているかが記述されている事が多いようです。
(15)CharSetCodin
roman、sjisなどのフォントの文字が取り出される文字セット。

アスタリスク(*)を記述すると適当に文字を選択します。

文字の大きさ変更などする場合は

ピクセルポイント変換
ピクセル = ポイント × dpi / 72
ポイント = ピクセル × 72 / dpi

スケーラブルフォントであれば任意の数字が可能ですがそれ以外では特定の数字以外を指定しないでください。

また、PointSize、AverageWidthとの関係が異常だとアラームが鳴り終了不能状態になる場合があります。注意してください。

例として以下のような設定があります。(ポイントは75dpi上です)

16ポイン
(create-fontset-from-fontset-spec
 (concat
  "-*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-monaco16,"
"japanese-jisx0208:-apple-osaka-medium-r-normal--16-160-75-75-m-160-jisx0208.1983-sjis,"
  "ascii:-apple-monaco-medium-r-normal-*-14-*-*-*-*-*-mac-roman"))
(set-default-font "fontset-monaco16")
(setq default-frame-alist (append '((font . "fontset-monaco16"))))

上記が大きく感じるようであれば以下もよいかもしれません。

12ポイント
(create-fontset-from-fontset-spec
 (concat
  "-*-fixed-medium-r-normal-*-12-*-*-*-*-*-fontset-monaco12,"
"japanese-jisx0208:-apple-osaka-medium-r-normal--14-140-*-m-140-jisx0208.1983-sjis,"
  "ascii:-apple-monaco-medium-r-normal-*-12-*-*-*-*-*-mac-roman"))
(set-default-font "fontset-monaco12")
(setq default-frame-alist (append '((font . "fontset-monaco12"))))

この表示がきにいらない場合は、変更してみてください。

XFLDの説明に関して

ぼくはフォントはあまり詳しくないため、説明が変である事確実です。つっこみください。

快適な日本語入力環境のために

残念な事に現状のEmacsはことえり等による日本語インライン入力に対応していません。

ここではより快適な日本語入力環境の構築方法を解説します。

SKKの導入

日本語Emacs使いでもっとも利用率が高いとされる日本語入力用Emacs Lispパッケージです。ぼくもSKK使いです。

その入力方式は手書に近いといわれますが、癖が非常につよいため慣れないと入力が思うようにいかないのが難点です。

ただ、SKKを利用していると漢字の送り仮名をまちがえる率が減りますし、いろいろよいと思います。

SKK Openlabで開発されています。

簡単にインストール方法を解説します。

SKKのインストールにはAPELftp://ftp.m17n.org/pub/mule/apelが必須です。

SKKそのもののソースはhttp://openlab.ring.gr.jp/skk/maintrunk/

また辞書がhttp://openlab.ring.gr.jp/skk/dic/にあります。

$HOME/src以下にソースを展開してインストールする前提で説明します。

以下のコマンドはバージョン番号を自分でおぎなって実行してください。

SKKインストール
cd ~/src
curl -O ftp://ftp.m17n.org/pub/mule/apel/apel-xx.tar.gz
curl -O \
    http://openlab.ring.gr.jp/skk/maintrunk/ddskk[YYYYMMDD].tar.gz
curl -O http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.L.gz

tar xvfz apel-xx.tar.gz
cd apel-xx
make
sudo make install
passward:      (管理者パスワードの入力)
cd ../
gunzip SKK-JISYO.L.gz
tar xvfz ddskk[YYYYMMDD].tar.gz
cd ddskk[YYYYMMDD]
cp ../SKK-JISYO.L ./dic/
make
sudo make install

基本的には以上で終了です。.emacs.elに記述する事はありません。

Emacsを再起動してください。C-x C-jにて日本語入力可能となります。

その他の詳細はSKKのマニュアルを御覧ください。

YC

Cannaを利用するためのパッケージです。

YC の部屋

CannaのインストールはFinkを利用すれば簡単です。設定等に関してはぼくはまったく知りません。

詳細に解説したサイトがいくつもあるのでそちらを御覧ください。

tamago

elispのみで実装されたWnn6/FreeWnn/Canna/Sj3を利用するためのパッケージ。

Tamago Project

FreeWnnのインストールに関してはsaito様投稿の以下を御覧ください。http://www.egroups.co.jp/message/macemacsen/179

Anthy

Anthyは比較的新しい日本語入力システムです。同梱されるanthy.elを利用する事でEmacsから利用可能です。

Anthy

ヘルプ機能の利用

知りたい事がどんどん増えると思います。そういう時はまずは自力で調査する事が必要になります。

ここではその調べ方を記述します。

Help

詳細はGNU Emacs Manual ヘルプ機能に記述されているため、一部のみ解説します。

ヘルプ機能は標準ではC-hもしくはF1(ファンクション1)に割りあてられています。ここでは標準のキーC-hで説明します。(1)

ここでは*scratch*バッファ(Lisp Interactionモード)を対象にして解説します。

  1. このキーを変更している人が多いためWeb上の情報では注意してください。ぼくも変更しています。

Helpの基本

まずC-hをうちます。Type ? for further optionsとミニバッファにでます。そのまま?を打つと英文ですが説明がでます。

Emacsのヘルプは基本的に英文です。文法は中学生英語程度です。時々計算機科学系の単語が使用されている事がありますが、内容はそれほど難しくはないでしょう。コンピュータをより便利に利用しようとすると英文読解は必須になってきてしまいます。このあたりは我慢するしかありません。

まずはcを利用してみます。連続して打つ場合はC-h cです。

このキーではキーを打った時のキーコマンド名を表示します。

たとえばC-h c aとすると

a runs the command self-insert-command

とミニバッファに表示されます。これはaというキーを打った時はself-insert-commandというコマンドが呼ばれる事になります。

もっと詳細な情報が欲しい場合はC-h k aとします。self-insert-commandの動作の説明が英文で表示されます。

self-insert-commandの動作がうった文字をそのまま表示するコマンドだと言う事が記述されています。

Emacsではこのようにあらゆるキーにコマンドが割り当てられています。

普段良く利用するキーの説明なども意外な動作ができたりしておもしろい物です。たとえばC-h k C-x C-fなどで説明を読むとWILDCARDSの文字があります。

C-x C-f
C-x C-f ~/src/cfile/*.c

などとすると拡張子がcのファイル全てを開く事ができます。

Carbon Emacsのバグに関して

Carbon EmacsにはバグがありC-x C-fのこの動作がうまくいかない場合があります。

その場合は*scratch*バッファにて

(find-file "~/src/cfile/*.c" t)

としてC-j(もしくはC-x C-e)してみてください。

普段なにげなく利用しているコマンドも知らない利用法というのは結構ある物です。

モードの機能調査

Emacsでは各モードに沢山の機能があります。モードの簡単な機能説明はC-h mで表示されます。

キーと割りあてられているコマンドの一覧が出てくると思います。各コマンドの内容説明はC-h fでコマンド名を入力すれば出す事ができます。

ただしこの場合キーに割り当てられていないコマンドは説明として出ません。キー割り当てされていない関連コマンドや関連変数を調査する場合はM-x aproposして調査します。

たとえばlisp-interaction-modeはlisp-interactionで調査する事ができます。

M-x apropos<RET>
Apropos symbol (regexp or words):lisp-interaction<RET>

M-x aproposの検索には正規表現が利用できます。

M-x apropos<RET>
Apropos symbol (regexp or words):^lisp-interaction*<RET>

などだとより厳密です。

lisp-interactionはあまり大きなモードではないので関連項目が少ないですが、SKKやNavi2chなどの巨大なパッケージになると関連項目が大量に存在する事になります。巨大パッケージを調査する場合に重宝すると思います。

info

Emacsでのマニュアルはほとんどの場合infoで提供されます。C-h iでinfoが表示されます。

infoモードでのキー操作もC-h mすれば出す事ができます。infoは頻繁に参照する事になるのでキー操作は覚えておいた方が便利です。

もっともよく利用するのはiの検索です。,で続けて検索ができます。

英語の単語がなんとなくわかるならinfo内を検索するのがGoogleよりも速いでしょう。

標準elisp

dired

ディレクトリ操作用パッケージです。M-x diredもしくはC-x C-fした時にディレクトリを指定すれば起動します。

キー操作はdired起動時にC-h mすればわかります(英語)。

info

C-h iで起動します。各種モードの説明が記述されています(英語)。

キー操作はC-h mでみてください。

WoMan

man閲覧用モード。

manというのはUNIX系ソフトなので利用されているマニュアルの形式です。

JM Projectなどから日本語manの入手も可能です。

M-x womanで起動。ぼくは以下の設定をしています。

.emacs.el
;; default ("/usr/man")
(setq woman-manpath '("/usr/local/man" "/usr/share/man" 
					  "/sw/man" "/usr/share/man/ja_JP.ujis"))

;; 初回起動が遅いので cache 作成。
(setq woman-cache-filename (expand-file-name "~/etc/woman_cache"))

;; 新しく frame は作らない。
(setq woman-use-own-frame nil)

PCL-CVS

CVSのフトントエンド。CVSに関しては、入門 CVS サポートページなどを参照の事。

操作はCVSの利用になれていると理解できます。

Logの文字コード設定
(modify-coding-system-alist 'process "cvs" '(undecided . euc-japan))

この設定は必須です。設定せずに日本語をLogに書くとかなり悲惨。

Eshell

M-x eshellで起動。

elispで実装されたshellです。おもしろすぎます。

change-log-mode

Changelog記述用モード。

いろんなメモはChangelog形式。

ChangeLogというファイルを作成してひらけば自動です。

C-x 4 aで書きはじめます。

GNU形式での書き方の文書としては、Maintaining the ChangeLogなどがあります。

ChangeLogを書く技術はけっこう重要だと思います。

設定例
(setq user-full-name "自分の名前")
(setq user-mail-address "自分のメイルアドレス")
(defun memo ()
  (interactive)
  (add-change-log-entry 
   nil
   (expand-file-name "~/etc/memo.txt"))
   (skk-mode 1))
(global-set-key "\C-cm" 'memo)

これはそもそもOpen Sourceな検索Softwareとして有名なnamazuの作者である高林氏の記事が基です。

calendar/diary

カンダーと日記。連動させると便利です。

M-x calendarで日付上にカーソルを置き、idで日記が書けます。

外部elisp

ネット

Wanderlust

elispのみで実装されたMUA(Mail User Agent)。いわゆるメイルソフトです。

ネットニュースを読む事も可能なので、一つのメイルもニュースも読みたい場合は重宝します。

Wandrlust

ぼくは常用しています。

画面例

Mew

elispのみで実装されたMUA(Mail User Agent)。いわゆるメイルソフトです。

Mew

Semi-gnus

メイル、ニュースその他いろんな物が閲覧できます。多機能。

Semi-gnus

emacs-w3m

w3mをEmacsから利用するためのパッケージ。

Emacs 上で w3m を動かそう

まず、w3m HOMEPAGEから、w3mをダウンロード。

tar xvfz w3m-x.x.x.tar.xvfz
cd w3m-x.x.x
./configure
make
sudo make install

JTerminal上で、w3mしてみます。パスがとおっている事を確認してください。

その後emacs-w3mをインストール。

設定例
(autoload 'w3m "w3m" "Interface for w3m on Emacs." t)
(autoload 'w3m-find-file "w3m" "w3m interface function for local file." t)

;; browse-url w3m
(setq browse-url-browser-function 'w3m-browse-url)
(autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t)
(global-set-key "\C-xm" 'browse-url-at-point)

(autoload 'w3m-search "w3m-search" "Search QUERY using SEARCH-ENGINE." t)
(setq w3m-search-default-engine "google-ja")
(global-set-key "\C-cs" 'w3m-search)
(setq w3m-mailto-url-function 'wl-draft)

(autoload 'w3m-weather "w3m-weather" "Display weather report." t)
(autoload 'w3m-antenna "w3m-antenna" "Report chenge of WEB sites." t)
(setq w3m-use-form t)
(setq w3m-command "/usr/local/bin/w3m")
(setq w3m-display-inline-image nil)
画面例

navi2ch

2ちゃんねる廃人御用達の2ちゃんねる閲覧用パッケージ。

Navi2ch Project Home Page

設定例
(require 'navi2ch)
(setq navi2ch-list-bbstable-url "http://www.2ch.net/bbsmenu.html")

M-x navi2ch...本当に廃人にならないように用心してください。

画面例

Liece

IRCクライアントです。

IRCがなにか不明な場合は、IRC users in Japan Home PageIRC普及委員会などを一読してください。

http://www.unixuser.org/~ueno/liece/index.html.jaより入手してください。

インストールにはAPEL、SEMI、FLIMがあらかじめインストールされている必要があります。

インストール
tar xvfz liece-x.x.x.tar.gz
(解凍される)
./configure
make
sudo make install
設定例
(setq liece-nickname "ログイン用の名前")
;(setq liece-intl-catalogue-directory "/usr/local/share/liece/")
(setq 
 liece-window-style-directory   "/usr/local/share/liece/styles"
 liece-icon-directory           "/usr/local/share/liece/icons")

(autoload 'liece "liece" nil t)
;(setq liece-server "irc.tokyo.wide.ad.jp")

M-x lieceで起動

IRC server:と出るので空白を入力すると選択肢が表示されます。

起動した時にNickname already in useと出た場合そのログイン名はすでに使用されています。別の名前を入力するように求められますので入力してください。

C-c j #LieceやC-c j %おーえすてん、とかに参加して挨拶しましょう。

あやしいチャンネルがたくさんあるようです(^_^;

主なチャンネルはAtsuya's IRC pageなどで検索可能です。

以下はIRCに参加した時にとらせていただいたスクリーンショットです。御好意でポーズをとってくださいました。

画面例

予定・メモ

MHC

メイルで予定をうけとる場合にかなり便利なモードです。

MHC

hnf-mode

Hyper NIKKI Systemをの文法を記述するためのモード。

hnf-mode

HNSを利用しない場合でもメモ用としても利用できるので利用方法しだい。でもHNS利用しないならはcalender/diaryの方が便利かもしれない。

emacs-wiki

Emacs上でwiki likeな編集を実現するモード。

Emacs Resources

設定などは、Emacs Wikiを参照。

ぼくはときどき自分行動を記録してます。簡易メモがわりです。でもchange-log-modeが多いかも。。

debian-changelog-mode

Debian形式のchangelogを書くモード。emacs標準なのはGNU形式。debとか作成する場合はこれ利用した方がいいです。

http://people.debian.org/~psg/debian-changelog-mode.el

文書作成

PSGML

SGML記述のためのモード。XML,XHTML,HTMLなどの記述も可能です。XMLな文書を利用する場合emacs標準のsgml-modeよりも便利に個人的には感じます。

PSGML

sdoc-mode

SmartDoc記述用のモード。SmartDocに同梱されています。

この文書はすべてこれにより記述されている。基本的にXMLなので、あとあと便利です。

このごろは文書をすべてXML化している。。。

changelogもそのうち自動的にXMLにしてみようと思う。

YaTeX,YaHTML

LaTeXの作成モードとYaTeXに慣れた人用のHTML記述用モード。

YaTeX

その他

なんかいいのあったらおしえてください。