新刊『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』目次とサンプルページ

お待たせしました。 出版社からGOサインが出ましたので、新刊『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』 の目次とサンプルページを公開します。 近日 http://gihyo.jp/book/list にも載るでしょう。

この本は頭から読むことで徐々に装備を整えていくことができる一方、やりたいことを実現するためには何をすべきなのかを逆引きすることもできます。 本書のテーマは「Emacsカイゼン」です。 外部Emacs Lispにより装備をガンガン強化していくことを念頭に置いています。 RPGで武器や防具を装備して強くなることや、自作PCで新たなパーツを買うところを想像していただけれたらと思います。

<2010-07-20 火> Update: サンプルPDFがAdobe Readerで見られない不具合を解消しました。

サンプルページPDF

目次公開にあたって

知識は力なり

装備を整えていく際、どうしても避けられないのが.emacsに設定を追加することです。 .emacsに書くのは、御存知Emacs Lispです。 EmacsにはM-x customizeでGUIによる設定もできますが、残念ながら包括的ではありません。 どうしても.emacsを手で記述する必要があります。 そのため、設定に必要なEmacs Lispの知識を最初に紹介します。

正直、1章からいきなりEmacs Lispを持っていくのは勇気が必要でした。 もちろん読み飛ばして、本書に書いてある設定を丸写ししても外部Emacs Lispを使うことができます。 しかし、「知識は力なり」と言います。 意味もわからず行動するよりも、知識を持つことで自分が何をやっているのかがわかるようになります。 知識を持つことで、トラブルを未然に防ぎ、困ったときに自分で解決する力を養うことができます。 1章の知識は、なぜこの設定が必要なのかを考えたり、設定を変更する際にはどうしても避けられない背景知識となります。 最低限の知識を持つことが、目的を達成するための最短ルートと判断したため、このような構成にしました。 急がば回れです。

実際、Emacsが毛嫌いされる理由は、Emacs Lispの知識が不可避なところだと思います。 プログラミング経験のない読者にはわかりにくいかもしれません。 ここは初めての人にもわかりやすく書きました。 最初はわからなくても流し読みして「こんなものがある」と頭の片隅にでも置いておけばよいです。 レベルが上がったときに再び1章に戻れば、納得がいくと思います。 他のエディタからEmacsへ乗り換える人は、がんばって乗り換えてください。

バグ

本当に申し訳ありません。 本書には万全を期していましたが、残念なことに印刷所に入稿後にバグを発見してしまいました。

  1. 9(p35)のauto-async-byte-compile.elは外部Emacs Lispです。

そのため、2.2(p49)でauto-install.elを導入しないとM-x install-elisp-from-emacswikiが使えません。

目次


3 ■■はじめに
13 ■■本書を読む前に

19 ■■■Chapter01 設定に必要な最低限のEmacs Lispの知識
20 ■本章に入る前の基礎知識
22 ■1.1 コマンド 〜Emacsに命令する
24 ■1.2 S式 〜Emacs Lispの構成要素を知る
26 ■1.3 評価 〜Emacs Lispプログラムを実行する
28 ■1.4 関数 〜前置記法を知る
29 ■1.5 M-x ielm 〜Lisp 式(S式)を対話的に評価する
31 ■1.6 .emacs 〜Emacs起動時に自動で読み込むファイルを作成する
32 ■1.7 require 〜Emacs Lispファイルをロードする
34 ■1.8 M-x byte-compile-file 〜Emacs Lispファイルをバイトコンパイルする
35 ■1.9 auto-async-byte-compile.el 〜自動バイトコンパイルをする
36 ■1.10 M-x list-load-path-shadows 〜load-path優先度問題を解決する
37 ■1.11 M-; 〜コメントを処理する
39 ■1.12 setq 〜変数に値を設定する
40 ■1.13 defun 〜関数を定義する
41 ■1.14 add-hook 〜特定のタイミングで呼び出される関数を登録する
43 ■1.15 C-x C-e 〜テキストに埋め込まれたEmacs Lisp式を評価する

45 ■■■Chapter02 初期装備に必要な知識
46 ■本章に入る前の基礎知識
47 ■2.1 ddskk 〜日本語入力を行う
49 ■2.2 auto-install.el 〜Emacs Lispインストーラを利用する
52 ■2.3 ELPA 〜パッケージを簡単にインストールする
53 ■2.4 sticky.el 〜大文字入力を楽にする
54 ■2.5 <f1> 〜Emacsに問い合わせする
56 ■2.6 日本語 info 〜日本語マニュアルを導入する
57 ■2.7 info 〜infoドキュメントを読む


61 ■■■Chapter03 キーバインドについて
62 ■本章に入る前の基礎知識
63 ■3.1 キーマップ〜押されたキーに対してコマンドを探索する
65 ■3.2 Ctrl+1文字 〜最重要コマンドを覚える
67 ■3.3 Meta+英小文字 〜重要コマンドを覚える
69 ■3.4 プレフィクスキー 〜2ストローク以上のコマンドを覚える
71 ■3.5 define-key 〜キーマップを変更する
73 ■3.6 define-key 〜Ctrl+1文字に割り当てられるキーを探す
75 ■3.7 define-key 〜その他に割り当てられるキーを探す
76 ■3.8 sequential-command.el 〜同じコマンドを連続実行したときの振舞いを変更する
78 ■3.9 key-chord.el 〜キーボード同時押しでコマンドを実行する
79 ■3.10 minor-mode-hack.el 〜マイナーモード衝突問題を解決する


81 ■■■Chapter04 バッファ・ファイルを扱う
82 ■本章に入る前の基礎知識
83 ■4.1 ffap.el 〜現在位置のファイル・URLを開く
84 ■4.2 uniquify.el 〜ファイル名がかぶった場合にバッファ名をわかりやすくする
85 ■4.3 iswitchb.el 〜バッファ切り替えを強化する
87 ■4.4 recentf.el 〜最近使ったファイルを開く
89 ■4.5 bookmark.el 〜ファイル内の特定の位置をブックマークする
91 ■4.6 emacsclient 〜シェルから現在のEmacsにアクセスする
93 ■4.7 tempbuf.el 〜使わないバッファを自動的に消す
94 ■4.8 auto-save-buffers.el 〜ファイルを自動保存する
95 ■4.9 C-x v v 〜バージョン管理システムに登録する
97 ■4.10 C-x v =,C-x v u 〜バージョン管理システムで変更点を調べる・取り消す
98 ■4.11 C-x v l 〜バージョン管理システムで変更履歴を見る
100 ■4.12 C-x C-f,C-x d 〜ファイルリストからファイルを操作する
102 ■4.13 wdired.el 〜ディレクトリ内のファイル名を自由自在に編集する
103 ■4.14 tramp.el 〜リモートマシンのファイルに透過的にアクセスする
104 ■4.15 sudoedit 〜root権限でファイルを編集する


105 ■■■Chapter05 カーソル移動
106 ■本章に入る前の基礎知識
107 ■5.1 文字・単語・行・文単位の移動 〜矢印キーを使わずにカーソルを移動する
108 ■5.2 M-x transient-mark-mode 〜リージョンに色をつける
110 ■5.3 screen-lines.el 〜見かけの行でカーソルを移動する
111 ■5.4 C-s,C-r 〜インクリメンタルサーチで対象文字列の位置にカーソル移動する
113 ■5.5 migemo.el 〜ローマ字のまま日本語をインクリメンタルサーチする
115 ■5.6 point-undo.el 〜カーソル位置を戻す
116 ■5.7 bm.el 〜カーソル位置に目に見える印をつける
117 ■5.8 goto-chg.el 〜最後の変更箇所にジャンプする


119 ■■■Chapter06 入力支援
120 ■本章に入る前の基礎知識
122 ■6.1 autoinsert.el 〜ファイル作成時にテンプレートを挿入する
123 ■6.2 redo.el 〜「やり直し」をカイゼンする
124 ■6.3 sense-region.el 〜矩形を選択しやすくする
126 ■6.4 M-/  〜バッファから単語を補完する(動的略語展開)
127 ■6.5 yasnippet.el 〜略語から定型文を入力する
129 ■6.6 yasnippet.el 〜スニペットを定義する
132 ■6.7 yasnippet.el 〜スニペットを展開するコマンドを定義する
133 ■6.8 yasnippet.el 〜新規作成ファイルに自動でスニペットを展開する
134 ■6.9 yasnippet.el 〜スニペットをその場で定義して使う
136 ■6.10 M-x hippie-expand 〜略語展開・補完を行うコマンドをまとめる
138 ■6.11 <f3>,<f4> 〜キーボードマクロで操作を自動化する
140 ■6.12 M-x kmacro-save 〜キーボードマクロをコマンド化する
142 ■6.13 再帰編集 〜コマンド実行中に新たなコマンドを実行する
143 ■6.14 auto-complete.el 〜IDEのような入力支援をする


145 ■■■Chapter07 検索・置換
146 ■本章に入る前の基礎知識
148 ■7.1 M-x re-builder 〜正規表現を対話的に作成する
149 ■7.2 M-x occur 〜バッファ内で正規表現にマッチする行を出力する
150 ■7.3 M-s o (isearch-occur) 〜インクリメンタルサーチからマッチ行一覧を作成する
151 ■7.4 M-% 〜文字列を置換する
153 ■7.5 C-M-% 〜正規表現置換をする
155 ■7.6 color-moccur.el 〜バッファ内(複数可)を検索する
157 ■7.7 moccur-edit.el 〜color-moccur.elの結果を編集する
159 ■7.8 M-x grep 〜grepプログラムの実行結果に飛ぶ
161 ■7.9 igrep.el 〜grepコマンドラインを打たずにgrep検索する
162 ■7.10 grep-a-lot.el 〜複数の*grep*バッファを使う
163 ■7.11 grep-edit.el 〜grep検索結果を編集する


165 ■■■Chapter08 Emacsをもっと便利に
166 ■本章に入る前の基礎知識
167 ■8.1 col-highlight.el 〜現在桁をハイライトする
169 ■8.2 M-x highlight-regexp 〜正規表現にマッチした部分を自動ハイライトする
170 ■8.3 M-x follow-mode 〜ワイドディスプレイを有効活用する
171 ■8.4 w3m.el (emacs-w3m) 〜Webブラウザとして利用する
173 ■8.5 twittering-mode.el 〜twitterを利用する
175 ■8.6 gist.el 〜gist.github.comを利用する
176 ■8.7 navi2ch.el 〜2ちゃんねるブラウザを利用する
178 ■8.8 rcirc.el 〜シンプルなIRCクライアントを利用する
179 ■8.9 yaoddmuse.el 〜EmacsWikiを編集する
181 ■8.10 yaoddmuse.el 〜Emacs LispファイルをEmacsWikiにアップロードする
182 ■8.11 EmacsWiki svn リポジトリ 〜EmacsWikiリポジトリを丸ごと取得する
184 ■8.12 M-x customize-group 〜GUIで変数・フェイスをカスタマイズする



187 ■■■Chapter09 外部プログラム
188 ■本章に入る前の基礎知識
189 ■9.1 M-x shell 〜Emacsでシェルを動かす
191 ■9.2 M-x dired-do-shell-command 〜diredからシェルコマンドを実行する
192 ■9.3 M-!,M-| 〜シェルコマンドの実行結果を表示・貼り付けする
194 ■9.4 multi-shell.el 〜複数のshellバッファを利用する
195 ■9.5 M-x compile 〜Emacsの中でコンパイラを動かす
196 ■9.6 M-x executable-interpret 〜スクリプトを実行する
197 ■9.7 M-x diff 〜2つのファイルの相異点を出力する
198 ■9.8 shell-history.el 〜Emacs内のシェルコマンド実行履歴を保存する
199 ■9.9 multi-term.el 〜Emacsで端末エミュレータを利用する


201 ■■■Chapter10 テキスト整形/テキスト処理
202 ■本章に入る前の基礎知識
203 ■10.1 text-adjust.el 〜日本語の文章を整形する
205 ■10.2 M-x sort-lines 〜行をソートする
207 ■10.3 C-x r t,C-x r k,C-x r d 〜引用マークを付けたり外したりする
208 ■10.4 boxes 〜コメントを目立たせる・装飾する
210 ■10.5 M-x align 〜桁揃えをする


213 ■■■Chapter11 view-modeを徹底活用
214 ■本章に入る前の基礎知識
216 ■11.1 C-x C-r 〜view-modeでファイルを開く
217 ■11.2 C-x C-q 〜view-modeを有効・無効にする
218 ■11.3 define-key 〜view-modeのキー割り当てを変更する
219 ■11.4 viewer.el 〜書き込み不能なファイルでview-modeから抜けないようにする
220 ■11.5 viewer.el 〜view-modeのときにmode-lineに色をつける
221 ■11.6 viewer.el 〜メジャーモードに合わせてview-modeのキーバインドを設定する
222 ■11.7 viewer.el 〜特定のファイル・すべてのファイルをview-modeで開く


223 ■■■Chapter12 Emacs Lispプログラミング支援
224 ■本章に入る前の基礎知識
225 ■12.1 C-M-f,C-M-b,C-M-d,C-M-u,C-M-SPC,C-M-k,C-M-t 〜S式・リストを編集する
227 ■12.2 C-M-a,C-M-e,C-M-h 〜関数間を移動・関数をマークする
228 ■12.3 paredit.el 〜括弧の対応を取りながらS式を編集する
231 ■12.4 eldoc.el 〜Emacs Lisp関数・変数のヘルプをエコーエリアに表示する
232 ■12.5 C-x F,C-x K,C-x V 〜関数定義へジャンプする
233 ■12.6 usage-memo.el 〜*Help*バッファにメモを書き込めるようにする
234 ■12.7 M-x apropos 〜正規表現にマッチする変数名・関数名・フェイスを探す
236 ■12.8 M-x apropos-value 〜値にマッチする変数名を検索する
237 ■12.9 M-x apropos-documentation 〜ドキュメントにマッチするシンボルを検索する
238 ■12.10 M-x apropos-library 〜ライブラリの定義内容を知る
239 ■12.11 lispxmp.el 〜Emacs Lisp式の値をコメントで注釈する
240 ■12.12 edit-list.el 〜リスト変数の内容を編集する
241 ■12.13 el-expectations.el 〜ユニットテストを書く
243 ■12.14 batch-byte-compile 〜コマンドラインからバイトコンパイルする


245 ■■■Chapter13 プログラミング/文書作成支援
246 ■本章に入る前の基礎知識
247 ■13.1 open-junk-file.el 〜使い捨てのファイルを開く
248 ■13.2 summarye.el 〜バッファのサマリを表示する
250 ■13.3 text-translator.el 〜言語を自動判別して複数のWeb翻訳サービスを同時に使う
251 ■13.4 html-fold.el 〜HTML・XMLの要素を隠して見栄えをよくする
253 ■13.5 M-x ediff-files 〜2つのファイルの相異点をハイライトする・取り込む
255 ■13.6 M-x ediff-merge-files 〜2つのファイルをマージしたファイルを作成する
256 ■13.7 hideif.el 〜C言語プリプロセッサを隠す
257 ■13.8 hideshow.el 〜ブロックを折畳む
258 ■13.9 M-x imenu 〜現在のファイルにある関数定義にジャンプする(言語非依存)
259 ■13.10 M-x which-func-mode 〜現在の関数名を常に表示する
260 ■13.11 M-x flymake-mode 〜リアルタイムにプログラミング言語の文法チェックをする
262 ■13.12 ipa.el 〜ファイルに直接書き込まずにメモをする
264 ■13.13 multiverse.el 〜ファイルのスナップショットを取る
265 ■13.14 M-. 〜タグファイルを使って関数定義へジャンプする(言語非依存)
267 ■13.15 gtags.el 〜GNU GLOBALでソースコード解析を楽にする
269 ■13.16 fold-dwim.el 〜複数の折畳み・展開コマンドに統一的なインターフェースを提供する


271 ■■■Chapter14 org-mode 〜統合文書作成環境
272 ■本章に入る前の基礎知識
274 ■14.1 M-RET,<M-left>,<M-right> 〜見出し・項目を入力する
275 ■14.2 M-x org-insert-heading-dwim 〜1階層下・上の見出し・項目を入力する
276 ■14.3 <M-up>,<M-down> 〜行・見出し・リストを移動する
277 ■14.4 M-x org-remember 〜瞬時にメモを取る
280 ■14.5 「|」,TAB 〜表を作成する
282 ■14.6 C-c C-t,<S-up>,<S-down> 〜TODOリストを作成する
284 ■14.7 C-c C-s,C-c C-d 〜予定日時、締切日時を設定する
286 ■14.8 C-c C-q,C-c C-c,C-c / T 〜タグを作成・検索する
288 ■14.9 C-c l,C-c C-l 〜ハイパーリンクを作成する・辿る
291 ■14.10 *bold* /italic/ _underline_ =code= +del+ 〜文書を装飾する
292 ■14.11 「:」,#+BEGIN_EXAMPLE〜#+END_EXAMPLE 〜そのまま出力する
293 ■14.12 [/],[ ],C-c C-c 〜チェックリストを作成する
294 ■14.13 #+INCLUDE: 〜別なファイルを取り込む
295 ■14.14 C-c a 〜予定表を見る
298 ■14.15 C-c C-e 〜HTMLに変換する


301 ■■■Chapter15 anything.el 〜すべてを統べるものとその仲間たち
302 ■本章に入る前の基礎知識
306 ■15.1 <f1> m 〜ヘルプで使い方を覚える
307 ■15.2 C-p,C-n,RET,C-v,M-v 〜オブジェクトを選択する
309 ■15.3 RET,TAB,C-e,C-j 〜アクションを実行する
310 ■15.4 <left>,<right>,C-o 〜複数の情報源を扱う
311 ■15.5 M-x anything-for-files 〜ファイルを開くコマンドをまとめる
314 ■15.6 C-z(継続アクション) 〜anythingバッファを閉じずにアクションを実行する
315 ■15.7 M-x anything-resume 〜直前のanythingセッションを復元する
316 ■15.8 M-x anything-execute-anything-command 〜設定済みanythingを試す
318 ■15.9 M-x anything-call-source 〜情報源を試す
319 ■15.10 descbinds-anything.el 〜キーバインドを調べる
321 ■15.11 M-x anything-complete-shell-history 〜シェルコマンドの履歴から補完
322 ■15.12 M-x anything-apropos 〜コマンド名・関数名・変数名・フェイス名検索をする
323 ■15.13 M-x anything-show-kill-ring 〜過去のkill-ringの内容を取り出す
324 ■15.14 M-x anything-lisp-complete-symbol-partial-match 〜Emacs Lispシンボルを補完する
325 ■15.15 M-x anything-grep 〜grep結果をさらに絞り込む
326 ■15.16 anything-c-moccur.el 〜インクリメンタルサーチとoccurを合体する
328 ■15.17 C-c C-u 〜候補を再計算する
329 ■15.18 anything-other-buffer 〜anythingコマンドを定義する
331 ■15.19 変数 〜anythingをチューニングする


333 ■■■Chapter16 anything.elプログラミング
334 ■本章に入る前の基礎知識
339 ■16.1 type 〜オブジェクトの型を宣言して情報源を作成する
341 ■16.2 init 〜情報源の初期化をする
342 ■16.3 candidates-in-buffer 〜バッファの行から情報源を作成する
345 ■16.4 candidates-file 〜ファイルの行から情報源を作成する
346 ■16.5 grep-candidates 〜ファイルの行から情報源を作成する(高速版)
347 ■16.6 candidates,display-to-real,real-to-display 〜候補の見た目を変更する
349 ■16.7 candidate-transformer,filtered-candidate-transformer 〜候補全体を加工する
351 ■16.8 header-name 〜ヘッダを変更する
352 ■16.9 delayed,requires-pattern 〜処理時間のかかる情報源を作成する
354 ■16.10 volatile 〜入力のたびにcandidates関数を実行する
355 ■16.11 persistent-action 〜継続アクションを指定する
357 ■16.12 anything-candidate-number-limit,candidate-number-limit 〜候補数を変更する
358 ■16.13 dummy 〜パターンをそのまま候補にする
359 ■16.14 multiline 〜複数行にわたる候補を使う
361 ■16.15 type:line 〜特定の行番号へジャンプする情報源を作成する
362 ■16.16 headline 〜正規表現にマッチする行を出力する情報源を作成する
364 ■16.17 type:file-line 〜特定のファイルの行番号へジャンプする情報源を作成する
365 ■16.18 anything-marked-candidates 〜マークされた候補を得る
366 ■16.19 anything 〜anythingの呼び出し方を細かく制御する
367 ■16.20 anything-test-candidates 〜情報源をテストする
369 ■16.21 anything-debug-forms 〜デバッグをする
370 ■16.22 anything-attr,anything-attrset,anything-attr-defined 〜属性の値を参照・設定する
373 ■16.23 anything-compile-source-functions 〜anythingプラグインを作成する


375 ■■索引
380 ■■逆引き索引

予約注文受付中

注文はこちらから→http://www.amazon.co.jp/gp/product/4774143278

はてなブックマークhttp://b.hatena.ne.jp/entry/www.amazon.co.jp/gp/product/4774143278

返事

To 23.1.1試行錯誤中

サンプルページ PDF をダウンロードしてみたのですが、ページを表示させると真っ白でページ内容が見えません。

#環境は WinXP + Adobe Reader 9.3.3 です

あらら。xpdfでは表示されますが、acroreadでは無理ですね。連絡しておきます。