2013年3月24日日曜日

今日読んだ本、入門 GNU Emacs 第3版 の感想。

内容紹介

20年以上の歴史を持つ人気エディタのEmacs。当初はUnix上でしか使うことができなかったEmacsですが、現在ではUnix/LinuxだけでなくWindowsやMac OS Xでも使われています。本書には、アイコンベースのツールバーなどEmacs 21以降で使えるようになった新しい機能の解説をはじめ、進化を続けるEmacsを効果的に使うためのTIPSが含まれています。これからEmacsを使いはじめる方だけでなく、パワーユーザにもお勧めです。知らなかった基本機能がきっと見つかるはず。

目次

監訳者まえがき
はじめに
1章 Emacs入門
1.1 Emacsへようこそ!
1.2 ファイルとバッファ
1.3 モードについて
1.4 Emacsの起動
1.5 Emacsの画面
1.5.1 ツールバー
1.5.2 メニュー
1.5.3 モードライン
1.5.4 ミニバッファ
1.6 Emacsコマンド
1.7 ファイルを開く
1.7.1 間違ったファイルを開いたら
1.7.2 ファイル名の補完
1.7.3 ファイルの挿入と追加
1.7.4 デフォルトディレクトリの決め方
1.8 ファイルの保存
1.9 Emacsの終了
1.10 ヘルプの表示
1.10.1 [Help]メニュー
1.11 まとめ
1.11.1 起こりがちな問題
2章 テキストの編集
2.1 カーソルの移動
2.1.1 その他のカーソル移動方法
2.1.2 画面単位(またはそれ以上)でのカーソル移動
2.1.3 コマンドの繰り返し
2.1.4 表示のセンタリング
2.1.5 Emacsコマンドとキー操作
2.2 テキストの削除
2.2.1 キルリング
2.3 マークしたテキストの削除、移動、コピー
2.3.1 テキストのコピー
2.3.2 以前に削除した内容を再挿入する
2.3.3 選択と貼り付け
2.4 クリップボードの操作
2.4.1 クリップボードへのテキスト入力
2.4.2 クリップボードからのテキスト取り出し
2.5 編集上のトリックとショートカット
2.5.1 誤った文字順の修正
2.5.2 大文字小文字の変換
2.5.3 上書きモード(Ovwrtモード)
2.6 コマンドの中止と変更の取り消し
2.6.1 コマンドの中止
2.6.2 操作の取り消し(undo)
2.6.3 ファイルからバッファの内容を戻す
2.6.4 バックアップファイルを用いて以前の版に戻る
2.6.5 失った変更の復元
2.7 Emacsのカスタマイズ
2.7.1 ツールバーを非表示にする
2.7.2 CUAモードでのC-x、C-c、C-vによる切り取り、コピー、貼り付け
2.7.3 Textモードとauto-fillモードを自動的に有効にする
2.7.4 キーバインドの変更
2.7.5 起こりがちな問題
3章 検索と置換
3.1 様々な検索方法
3.1.1 インクリメンタル検索
3.1.2 単純検索
3.1.3 単語検索
3.2 検索と置換
3.2.1 単純検索と置換
3.2.2 問い合わせ置換
3.2.3 問い合わせ置換(とその他の複雑なコマンド)の再実行
3.2.4 再帰編集
3.2.5 検索時の大文字小文字の区別
3.2.6 検索、置換作業のための正規表現
3.3 Ispellを使用したスペルチェック
3.3.1 バッファのチェック
3.3.2 単語のスペルチェック
3.3.3 スペルの補完
3.3.4 Flyspellを用いてスペルの即時チェックをする
3.4 単語略称機能
3.4.1 動的略称機能
3.4.2 単語略称モード
3.4.3 起こりがちな問題
4章 バッファとウィンドウおよびフレームの利用
4.1 バッファ、ウィンドウ、フレームについて理解する
4.1.1 ウィンドウとフレームの違い
4.1.2 ウィンドウやフレームとは独立したバッファ
4.1.3 バッファの詳細
4.2 複数バッファの取り扱い
4.2.1 バッファの切り替え
4.2.2 バッファの消去
4.3 ウィンドウの取り扱い
4.3.1 ウィンドウの上下分割
4.3.2 ウィンドウ間の移動
4.3.3 ウィンドウの削除
4.4 フレームの操作
4.4.1 新しいフレームの作成
4.4.2 フレーム間の移動
4.4.3 フレームの削除と最小化
4.5 様々なバッファ操作
4.5.1 複数バッファの保存
4.5.2 バッファ名の変更
4.5.3 読み込み専用バッファ
4.5.4 バッファリストの取得
4.5.5 バッファリストの操作
4.6 高度なウィンドウ操作
4.6.1 垂直(つまり左右)に分割されたウィンドウの作成
4.6.2 ウィンドウ間の移動
4.6.3 ウィンドウの拡大と縮小
4.6.4 ウィンドウサイズの制限
4.6.5 2つのウィンドウのファイルを比較する
4.7 ブックマークの利用
4.7.1 ブックマークの作成
4.7.2 ブックマークへの移動
4.7.3 ブックマークの名前変更と削除
4.7.4 ブックマークリストの操作
4.7.5 ブックマークへの注記
4.7.6 その他のブックマークコマンド
5章 作業環境としてのEmacs
5.1 シェルバッファでのコマンドの実行
5.1.1 コマンドを1つずつ実行
5.1.2 Shellモード
5.2 Diredを用いたディレクトリ操作
5.2.1 ファイルの表示と編集
5.2.2 ファイルの削除、コピー、名前変更
5.2.3 ファイルの圧縮と展開
5.2.4 ファイルの比較
5.2.5 ファイルに対するシェルコマンドの実行
5.2.6 複数のファイルの操作
5.2.7 ディレクトリ間の移動
5.3 Emacsでの印刷の実行
5.4 manページの表示
5.5 時間管理ツール
5.5.1 カレンダの表示
5.5.2 ダイアリ機能
5.5.3 起こりがちな問題
6章 マクロの記述
6.1 マクロの定義
6.2 よいマクロを作るコツ
6.3 より複雑なマクロの例
6.4 マクロの編集
6.5 マクロリング
6.6 マクロにキーを割り当てる
6.7 マクロの名前付け、保存、実行
6.8 複雑なマクロの作成
6.8.1 マクロの一時停止とキーボード入力
6.8.2 問い合わせの追加
6.9 リージョンでのマクロ実行
6.10 マクロの先にあるもの
7章 簡単なテキスト整形機能と特殊編集機能
7.1 タブ機能
7.1.1 Emacs 21におけるタブ機能のデフォルト設定
7.1.2 タブ位置の変更
7.1.3 タブ文字そのものが必要な場合
7.1.4 タブ幅の変更
7.1.5 タブとスペース
7.1.6 タブをスペースに変更(あるいはその逆)
7.2 インデント
7.2.1 パラグラフのインデント
7.2.2 パラグラフ1行目のインデント
7.2.3 インデントされたパラグラフの行揃え
7.2.4 マージンの変更
7.2.5 行揃え接頭辞の使用
7.3 センタリング
7.4 Outlineモード
7.4.1 Outlineモードの開始
7.4.2 テキストの隠蔽と表示
7.4.3 テキスト隠蔽時の編集
7.4.4 マークの設定
7.4.5 セクションの昇格と降格
7.4.6 マイナーモード
7.5 矩形編集
7.5.1 CUA矩形編集
7.6 簡単な図の作成
7.6.1 Pictureモードでの作図
7.6.2 Pictureモードでの編集
7.6.3 Artistモード(素晴らしきマウス使い)
7.6.4 起こりがちな問題
8章 マークアップ言語の編集
8.1 コメント
8.2 Font-Lockモード
8.3 HTMLの編集
8.3.1 HTMLモード
8.3.2 HTML helperモードの使い方
8.4 XMLの記述
8.4.1 SGMLモードによるXMLの記述
8.4.2 TEI Emacsを用いたXMLの編集
8.4.3 nxmlモードでのXHTML記述
8.4.4 psgmlモードの利用
8.5 TEXとLATEXの編集
8.5.1 カッコの対応づけ
8.5.2 引用符と段落
8.5.3 コマンドの組
8.5.4 テキストのTeX処理と印刷
9章 プログラミング言語の編集
9.1 統合開発環境としてのEmacs
9.1.1 コンパイルとデバッグ
9.2 コード作成
9.2.1 言語モード
9.2.2 コメント
9.2.3 ソースコードのインデント
9.2.4 etags
9.2.5 フォントとFont-Lockモード
9.3 CモードとC++モード
9.3.1 カーソル移動コマンド
9.3.2 インデントスタイルのカスタマイズ
9.3.3 C/C++モードのその他の機能
9.3.4 C++モードでの違い
9.4 Javaサポート
9.4.1 Javaモード
9.5 JDEE(Emacs用Java開発環境)
9.5.1 インストールの準備
9.5.2 CEDETのインストール
9.5.3 ELispライブラリのインストール
9.5.4 JDEEのインストール
9.5.5 Javaツールの登録
9.5.6 JDEEでの編集
9.5.7 JDEEでのコンパイルと実行
9.5.8 JDEEでのデバッグ
9.5.9 JDEEをさらに利用するために
9.6 Perlサポート
9.6.1 Perlに関する警告
9.7 SQLサポート
9.7.1 前提要件
9.7.2 SQL操作モード
9.8 Lispモード
9.8.1 Lispモードにおけるインデント
9.8.2 Lispモードでのコメント
9.8.3 各Emacs-Lispモードの違い
9.8.4 Lispモードの違い
9.8.5 小さなLispコードの編集
10章 Emacsのカスタマイズ
10.1 Customによるカスタマイズ
10.1.1 Customの操作
10.1.2 共通オプション
10.1.3 Customによるカスタマイズ
10.1.4 Abbrevモードの設定例
10.1.5 [Options]メニュー
10.1.6 Diredの設定例
10.1.7 カスタマイズ変数の探し方
10.2 .emacsの編集
10.2.1 Customと.emacsの比較
10.2.2 .emacs設定入門
10.2.3 .emacsファイルの例
10.3 フォントと配色の変更
10.3.1 対話的なフォントの変更
10.3.2 自動のハイライト表示と色付けについての設定
10.3.3 Customによるフォントのカスタマイズ
10.3.4 色の変更
10.3.5 装飾テキストの保存
10.4 キーバインドのカスタマイズ
10.4.1 特殊キーの設定
10.4.2 キーバインドの解除
10.5 Emacs変数の設定
10.6 Emacs Lispパッケージの検索
10.7 auto-modeのカスタマイズを行い、最初のモードを設定する
10.8 Emacsを自分の思ったように動かす
11章 Emacs Lispプログラミング
11.1 Lisp入門
11.1.1 Lispの基本要素
11.1.2 関数の定義
11.1.3 Lisp関数をEmacsのコマンドにする
11.2 Lispの基本関数
11.2.1 複文
11.2.2 制御構文
11.3 便利な組み込み関数
11.3.1 バッファ、テキスト、リージョン
11.3.2 正規表現
11.3.3 標準ライブラリは宝の山
11.3.4 正規表現を利用する関数
11.3.5 その他の組み込み関数
11.4 自動テンプレートシステムの構築
11.5 メジャーモードのプログラミング
11.5.1 メジャーモードのコンポーネント
11.5.2 さらにLispの基本:リスト
11.5.3 電卓モード
11.5.4 電卓モードのLispコード
11.6 既存のモードのカスタマイズ
11.7 独自のLispライブラリの構築
11.7.1 Lispファイルのバイトコンパイル
12章 バージョン管理
12.1 バージョン管理の使用
12.2 バージョン管理の概念
12.3 VCによる基本操作の補助集
12.5 VCコマンドの概要
12.6 VCモードのインジケータ
12.7 バージョン管理システムの選択
12.8 VCのコマンド
12.8.1 ファイルのグループとサブツリーの取り扱い
12.8.2 差分のレポート
12.8.3 以前のリビジョンの抽出
12.8.4 変更履歴の表示
12.8.5 ファイルの登録
12.8.6 バージョン管理ヘッダの挿入
12.8.7 スナップショットの作成と復元
12.8.8 ChangeLogファイルの更新
12.8.9 バージョン管理下にあるファイルの名称変更
12.8.10 VCが混乱したら
12.9 VCのカスタマイズ
12.10 VCの拡張
12.11 VCの限界
12.12 VCの有効活用
12.13 Ediffによる比較
12.13.1 Ediffの起動
12.13.2 Ediffによるファイル比較
12.13.3 相違点をマークする
12.13.4 Ediffの終了
12.13.5 混乱状態からの回復
12.13.6 Ediffについてさらに学習するために
12.13.7 Ediffのカスタマイズ
12.13.8 Ediffを自動的に起動する
13章 ヘルプシステム
13.1 チュートリアル
13.2 ヘルプコマンド
13.2.1 詳細情報
13.2.2 aproposコマンド
13.3 複雑なコマンドのヘルプ
13.4 Emacsドキュメントの閲覧
13.4.1 Infoの使用
13.4.2 FAQ、ニュース、アンチニュース
13.5 補完
13.5.1 補完のカスタマイズ
付録A Emacsの変数
付録B Emacs Lispパッケージ
付録C バグとバグフィックス
付録D Emacs関連サイト
付録E クイックリファレンス
用語集
索引

関数型プログラミング言語って面白そうって感じてHaskellの学習始めたものの、ちょっとつまずいて難しいなぁと思って止まったままになっていたので、気分転換のために別の関数型言語を学習しようとLispを選択。そして早速オライリーで見つけたLand of LISP: Learn to Program in Lisp, One Game at a Time!(邦訳版)とその他にも実践Common LispOn Lispを入手してざっと読む。すると、どうやらLispはテキストエディタ、Emacsと相性がいいみたいなので、せっかくだし本書を読んでみる事に。ちなみに現在使用しているテキストエディタはCUIではvim、GUIではBBEdit - Bare Bones Software, Inc.、参考書籍はTake Control of BBEdit

viの使い方を身につける時に、入門vi 第6版を読んでいたので、viとemacsはUNIXの2大エディタと言われているのでemacsの本書もそれぐらいの量、厚さだろうと思っていたら、想像以上に分厚くて驚いて身構えてしまった。(Amazonでページ数をちゃんと確認してればそんなに驚く事も無かったんだろうけど。><)なので、気軽な気持ちになるために、とりあえずさっと全体を眺めてみようと最初から最後まで目を通してみると、viよりemacsの方が高機能、逆に言えば複雑、シンプルさに欠けるような印象。

そこに惹かれた。私のこれまでプログラミング学習環境の推移はおおまかに、最初はプログラミング言語C#と統合開発環境のVisual Studio、次はPythonやPerl、RubyとvimやBBEdit。Visual Studioからvimを使うようになったときは動作が軽くコンパイルもしなくていいし、なんて気軽で楽しいんだろうと感じたけど、次第にvimのシンプルという長所に少し物足りなさも感じてきた。(もちろんviは高機能で多数カスタマイズ可能だし、それを使いこなせてないだけかもしれないけど。)かといってVisual Studioのような重い環境に戻りたくなかったりだったけど、そんな私にはEmacsはちょうどいいかも!って感じた。とはいいつつ、実際に使い始めた訳でもなく、それにただ新しいもの好きなだけですぐ飽き足りするかもしれないし、エディタや開発環境の善し悪しは目的、好み、慣れの問題だと思うけど。

ということで、とりあえずLispの学習の間はEmacsを使ってみて、それで、実際に、よりEmacsが好きになっていったらその後もEmacsを使っていこうかなあと思った今日この頃。

0 コメント:

コメントを投稿