目次
- 本書に寄せて
- はじめに
- 改訂にあたって
- 本書の構成
- サンプルコードのダウンロード
- Emacs Lispの構文
第1章:Emacsの世界へようこそ
1.1 多くの人に愛される歴史あるエディタ
- ユーザーが自由に機能を変更・追加できる
- 使いこなせば強力な味方になる
- 本当は難しくないEmacs
1.2 本当のエディタにできること
- エディタが本来持つべき機能
1.3 EmacsがEmacsであるための特徴
- 優れた操作性
- 設定の柔軟性
- 本体の拡張性
第2章:インストール,設定ファイルと画面の構成
2.1 インストール
- Macへのインストール
- Emacs.appを入手する
- Emacs.appを自分でビルドする
- Windowsへのインストール
- オフィシャルビルドを利用する
- Linuxへのインストール
- ターミナル環境へのインストール
2.2 ディレクトリと設定ファイルの構成
- 各ディレクトリの役割
- etcディレクトリ
- leimディレクトリ
- lispディレクトリ
- site-lispディレクトリ
- binディレクトリ
- ホームディレクトリに作成される.emacs.dディレクトリ
- Windowsのホームディレクトリ設定
- 設定ファイルの構成
2.3 画面の構成
- フレーム
- ウィンドウ
- フリンジ
- バッファ
- [column] Emacsは終了しない?
- モードライン
- ミニバッファ(エコーエリア)
2.4 モード
- メジャーモード
- メジャーモードを選択するしくみ
- メジャーモードが提供する機能
- マイナーモード
- マイナーモードが提供する機能
- [column] アラインメント機能を使ってきれいなコードを書く
第3章:基本的な操作
3.1 コマンド
- 入力して実行する
- キーバインドから実行する
- コマンドの表記方法
- キーバインドの表記方法
- キーバインドの表記サンプル
- プレフィックスキー(起点キー)
3.2 起動と終了
- 起動する
- Emacsデーモンで起動を高速化する
- [column] 困ったときはC-gでキャンセル
- デバッグモードでの起動
- 終了する
3.3 ファイル(バッファ)を開く,保存する
- ファイル(バッファ)を開く──C-x C-f
- ファイル(バッファ)を保存する──C-x C-s
- すべてのファイル(バッファ)を保存する──C-x s
- バックアップファイル
- オートセーブファイル
- 別名で保存する──C-x C-w
- バッファに別ファイルを挿入する──C-x i
- 文字コード・改行コードを変換する──C-x RET f
- 文字コード・改行コードを変換して開き直す──C-x RET r
- バッファを切り替える──C-x b
- バッファを消去する──C-x k
3.4 カーソル移動
- キーバインド一覧
- Emacsのホームポジション
3.5 文字の入力や文字列の操作
- マークとリージョン──C-SPC
- コピーとカット──M-w,C-w
- 行を消去する──C-k
- ペーストする──C-y,C-y M-y……
- コメントする,コメントを解除する──M-;
- 特殊文字を入力する──C-q
- アンドゥ──C-/,C-_,C-x u
- [column] ちょっと便利なリージョン選択方法
3.6 Emacsの正規表現
- 特別な文字
3.7 検索と置換
- grepによる検索
- インクリメンタル検索──C-s,C-r,C-M-s,C-M-r
- 対話置換,一括置換──M-%,C-M-%
- ナローイングでバッファの一部のみを編集する
3.8 ウィンドウ操作
- ウィンドウを分割する──C-x 2,C-x 3
- ウィンドウを移動する──C-x o
- 分割したウィンドウを閉じる──C-x 1,C-x 0
3.9 ディレクトリ操作(Dired)
- ファイル名の一括変更──wdired-change-to-wdired-mode
3.10 キーボードマクロによる繰り返し操作
- 基本的な使い方
- 名前を付ける
- 再利用するために保存する
3.11 表示の変更
- 文字サイズをすぐに変更する──C-x C-+,C-x C-=,C-x C--,C-x C-0
- 行の折り返し表示を変更する──M-x toggle-truncate-lines
3.12 ヘルプの利用
- info──M-x info
- ヘルプコマンド──C-h,
- よく利用するヘルプコマンド
- C-h a 文字列 RET
- C-h b
- C-h k キーバインド
- C-h w コマンド名 RET
- C-h f 関数名 RET
- C-h v 変数名 RET
- 日本語ドキュメント
第4章:設定ファイルの管理方法
4.1 効率的な設定ファイルの作り方と管理方法
- ~/.emacs.dディレクトリに設定をまとめて管理
- サブディレクトリの構成
- Elispをどのように配置すべきか
- Elisp配置用のディレクトリを作成する
- ロードパスを追加する
- 設定を反映するには
- 設定を分割して管理
- ファイルを分ける
- init-loader.elを利用する
4.2 環境に応じた設定の分岐
- OSの違いによる分岐
- CLIとGUIによる分岐
- Emacsのバージョンによる分岐
4.3 拡張機能の読み込み方
- requireとautoloadの違い
- require
- autoload
- コマンドがある場合のみ読み込む
4.4 Webサービスを用いたバックアップ
- GitHub
- ~/projects/dotfilesディレクトリに設定ファイルを移動する
- シンボリックリンクを利用する
- Gitにコミットする
- GitHubへプッシュする
- Dropbox
- [column] エディタ採用
- 自分が使う道具を厳選して選んで手入れをしている
第5章:本体の設定
5.1 設定を反映する方法
- C-x C-eとC-jによる評価
- その他の評価
5.2 キーバインドの設定
- キーマップ
- キーバインドの優先順位
- キーバインドの割り当て
- お勧めのキー操作
- 改行と同時にインデントする
- [column] C-hをバックスペースにする
- 行の折り返し表示を切り替える
- 簡単にウィンドウを切り替える
5.3 環境変数の設定
- パスの設定
- 文字コードの設定
- 現在の文字コード設定を調べる
- 文字コードを指定する
5.4 フレームに関する設定
- モードラインに関する設定
- 行番号/カラム番号を表示する
- ファイルサイズ,時計,バッテリー残量を表示する
- タイトルバーにファイルのフルパスを表示
- ウィンドウ左に行番号を表示
5.5 インデントの設定
- タブ文字の表示幅
- タブ文字の利用
- C,C++,Java,PHPなどのインデント
5.6 表示・装飾に関する設定
- フェイス
- フォントの設定
- 英語フォントを指定する
- 日本語フォントを指定する
- フォントの横幅を調節する
5.7 ハイライトの設定
- 現在行のハイライト
- 対応する括弧のハイライト
5.8 バックアップとオートセーブ
- オートセーブファイルからの復元
- バックアップとオートセーブの設定
- バックアップとオートセーブファイルの作成先を変更する
- オートセーブの間隔を変更する
5.9 変更されたファイルの自動更新
- ファイルの自動更新
5.10 フック
- 自動化のしくみ
- 利用方法
- 無名関数lambdaを使う場合
- 関数を定義する場合
- 代表的なフック一覧
- [column] 簡単な計算は*scratch*バッファで
第6章:テキスト編集をさらに効率化する拡張機能
6.1 Elispをインストールしよう
- インストール方法の種類
- package.el
- 手動インストール
- 手動インストール
- Elispを配置する
- バイトコンパイルする
- byte-compile-fileコマンド
- シェルからバイトコンパイルする
- package.elによるインストール
- ELPAリポジトリを追加する
- パッケージ一覧を取得する
- パッケージ一覧から選択してインストールする
- コマンドから直接インストールする
- ファイルやバッファからインストールする
- インストール先のディレクトリ構成と設定のしくみ
- [column] 拡張機能の設定方法を調べるには
6.2 テーマ
- テーマの変更──load-theme
- インストールする
- テーマ選択を保存する
- [column] Spacemacs
6.3 統一したインタフェースでの操作
- 候補選択型インタフェース──Helm
- インストールする
- 利用可能にする
- ファイルを開く・バッファを切り替える
- キーバインドを一覧表示する──helm-descbinds
- 過去の履歴からペーストする──helm-show-kill-ring
- moccurを利用する──helm-c-moccur
6.4 入力の効率化
- 補完入力の強化──Auto Complete Mode
- インストールする
- 利用可能にする
- 補完候補をポップアップ&絞り込む
6.5 検索と置換の拡張
- 検索結果のリストアップ──color-moccur
- インストールする
- 利用可能にする
- 代表的なコマンド
- マルチバッファを検索し結果をリストアップする
- カレントバッファを検索し結果をリストアップする
- moccurの結果を直接編集──moccur-edit
- インストールする
- 利用可能にする
- moccurの結果を編集する
- 編集を終了したときにファイルを自動保存する
- grepの結果を直接編集──wgrep
- インストールする
- 利用可能にする
- grepの結果を編集する
6.6 さまざまな履歴管理
- 編集履歴の記憶──undohist
- インストールする
- 利用可能にする
- ファイルを閉じたあとにアンドゥする
- アンドゥの分岐履歴──undo-tree
- インストールする
- 利用可能にする
- 樹形図を見ながらアンドゥする
- カーソルの移動履歴──point-undo
- インストールする
- 利用可能にする
- カーソル位置を戻す/やりなおす
6.7 ウィンドウ管理
- 分割状態を管理──ElScreen
- インストールする
- 利用可能にする
- スクリーンを作成する
- スクリーンを移動する
- 代表的なキーバインド
6.8 メモ・情報整理
- メモ書き・ToDo管理──howm
- インストールする
- 利用可能にする
- howm-menuを起動する
- メモを書く
- 保存と同時に閉じる
- アウトラインエディタ──org-mode
- アウトライン編集機能
- 表を入力する
6.9 特殊な範囲の編集
- 矩形編集──cua-mode
- 利用可能にする
- 各行頭に文字を追加する
- 各行頭の文字を削除する
- 連番を入力する
- [column] 便利な行操作コマンド
第7章:開発をさらに効率化する拡張機能
7.1 各種言語の開発環境
- Web開発
- web-mode
- web-modeの基本設定
- HTML
- html-mode
- html-modeを利用してタグを入力する
- html-modeが自動選択されるしくみ
- nxml-mode
- nxml-modeをHTML編集のデフォルトモードに
- nxml-modeで構文チェックする
- HTML5をnxml-modeで編集する
- nxml-modeの基本設定
- CSS
- less-css-mode
- sass-mode
- JavaScript
- 標準のjs-mode
- 構文チェック機能を備えたjs2-mode
- js2-modeをインストールする
- PHP
- php-mode
- オンラインドキュメントを利用する
- php-modeのインデントを調整する
- Perl
- cperl-mode
- [column] 便利なエイリアス
- cperl-modeのインデントを調整する
- yaml-mode
- Ruby
- ruby-modeのインデントを調整する
- Ruby編集用の便利なマイナーモードを利用する
- Emacsからirbを利用する──inf-ruby
- Python
- python-mode
- 構文をチェックする
- C/C++
- cc-mode
- cc-mode付属のマイナーモード
- c-mode-common-hookとそれぞれのフック
7.2 Flycheckによる文法チェック
- Flymakeとの違い
- Flycheckを利用できる言語
- Flycheckの利用
- インストールする
- 文法チェックを実行する
- 機能を追加する
7.3 コードの実行
- quickrunによるコード実行
- インストールする
- コードを実行する
7.4 タグによるコードリーディング
- Etags以外のタグ作成プログラム
- gtagsとEmacsの連携
- gtags.elをインストールする
- gtags-modeの使い方
- Helmとgtagsの連携
7.5 プロジェクトベースの編集──projectile
- projectileによるプロジェクト管理
- インストールする
- projectileを利用する
- Helmを使って利用する
- Railsサポートを利用して編集するファイルを切り替える
7.6 特殊な文字の入力補助
- 絵文字の入力補助──ac-emoji
- インストールする
- 絵文字を入力する
7.7 差分とマージ
- diffによる差分表示──M-x diff
- Ediffによる差分表示──M-x ediff
- ファイルを比較する
- 同一フレーム内にコントロールパネルを表示する
- キーバインド一覧
- Ediffによるパッチの適用──M-x epatch
- Ediffによるマージ──M-x ediff-merge
7.8 Emacsからデータベースを操作
- データベースへの接続
- MySQLへ接続する──sql-interactive-mode
- sql-modeとの連携
7.9 バージョン管理
- Emacs標準のバージョン管理機能
- Subversionフロントエンド──psvn
- インストールする
- 操作する
- Gitフロントエンド──Magit
- インストールする
- 操作する
- コミットする
- 差分の表示──git-gutter
- インストールする
- 差分を視覚的に表示する
7.10 シェルの利用
- シェルコマンドの実行──M-!
- カレントファイルへ結果を出力する──C-u M-!
- バッファの内容を標準入力として利用する──M-¦
- ターミナルの利用──multi-term
- インストールする
- ターミナルを起動する
7.11 TRAMPによるサーバ接続
- sudo,suによる編集
- バックアップファイルを作成しない
7.12 ドキュメント閲覧・検索
- Emacs版manビューア(WoMan)の利用
- 利用可能にする
- Helmによるman検索
7.13 テスティングフレームワークとの連携
- phpunit.el
- インストールする
- テストを実行する
- rspec-mode
- インストールする
- テストを実行する
- [column] Elispのライセンス
Appendix:最新情報を入手するには
A.1 開発状況
- フリーソフトウェアとしてのEmacs
- ソースコードリポジトリ
- Gitを利用してソースコードを取得する
A.2 開発版の試用
- 開発版のビルド
- READMEを読む
- configureファイルを作成する
A.3 新しい情報に触れるには
- メーリングリスト
- EmacsWiki──世界のEmacsコミュニティ
- メーリングリスト,Wiki,その先へ
- [column] 設定をシンプルにするuse-package
- [column] Google Mapsも使えるEmacs