WEB+DB PRESS plusシリーズEmacs実践入門
―思考を直感的にコード化し,開発を加速する

[表紙]Emacs実践入門―思考を直感的にコード化し,開発を加速する

紙版発売
電子版発売

A5判/272ページ

定価2,728円(本体2,480円+税10%)

ISBN 978-4-7741-5002-4

ただいま弊社在庫はございません。

本書の新版が発行されています。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

本書は,日常のテキスト編集やプログラム開発で,Emacsを快適に利用するためのノウハウを解説した書籍です。Emacsの魅力は,カスタマイズ性の高さや豊富な拡張機能にあります。反面,使いこなすにはある程度の知識が必要で,利用の障壁となっているのも事実です。本書では,基本的な使い方から,カスタマイズを行うための設定,そしてテキスト編集や開発時に便利な拡張機能の実践的な使い方まで,現在の状況に合わせてしっかり解説しています。プログラマはもちろん,テキスト編集を便利に行いたい方にもお勧めです。

こんな方におすすめ

  • Emacsをこれから使い始めたい方
  • Emacsをさらに使いこなしたい方

Emacs 24.1への対応

本書はEmacs 23.4を動作環境として解説していますが,バージョン表記などに関わる部分を変更すれば,Emacs 24.1でも同様に動作します。Emacs 24.1を利用する際は,次の対応情報を参考にしてください。

補足情報

本書に関するお知らせ

本書に関連する記事を公開しております。

この書籍に関連する記事があります!

本書に寄せて
私はEmacs使いです。最初にEmacsに接したのは,私がまだ大学生だったころの1988年のことです。
はじめに
Wikipediaに次のように書かれています。
歴史あるエディタの機能を最大限に引き出す
Emacsというエディタが産声を上げたのは1975年のことです。それから35年以上が経ち,数々のエディタが登場したにもかかわらず,一流のプログラマの多くがEmacsを愛用しています。

目次

  • 本書に寄せて
  • はじめに
    • 謝辞
  • 本書の構成
    • サンプルコードのダウンロード
  • Emacs Lispの構文

1章 Emacsの世界へようこそ

1.1 多くの人に愛される歴史あるエディタ

  • ユーザが自由に機能を変更・追加できる
  • 使いこなせば強力な味方になる
  • 本当は難しくないEmacs

1.2 本当のエディタにできること

  • エディタが本来持つべき機能

1.3 EmacsがEmacsであるための特徴

  • 優れた操作性
  • 設定の柔軟性
  • 本体の拡張性

2章 インストール,設定ファイルと画面の構成

2.1 インストール

  • Macへのインストール
    • Emacs.appを入手する
    • Emacs.appを自分でビルドする
  • Windowsへのインストール
    • オフィシャルビルドを利用する
    • NTEmacs,gnupackを利用する
  • 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-;
  • [Column] ちょっと便利なリージョン選択方法
  • 特殊文字を入力する──C-q
  • アンドゥ──C-/,C-_,C-x u

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)

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,<f1>
  • よく利用するヘルプコマンド
    • 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の違いによる分岐
  • CUIと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 フック

  • 自動化のしくみ
  • 利用方法
    • 無名関数lambdaを使う場合
    • 関数を定義する場合
  • 代表的なフック一覧
  • [Column] 簡単な計算は*scratch*バッファで

6章 テキスト編集をさらに効率化する拡張機能

6.1 Elispをインストールしよう

  • 標準的なインストール方法
    • auto-installを導入する
  • バイトコンパイル
    • byte-compile-fileコマンド
    • シェルからバイトコンパイルする
  • 拡張機能の自動インストール──auto-install
    • 利用可能にする
    • 利用する
  • [Column] 拡張機能の設定方法を調べるには
  • Emacs Lisp Package Archive(ELPA)──Emacs Lispパッケージマネージャ
    • Emacs 23へpackage.elをインストールする
    • ELPAのパッケージ一覧を取得する
    • パッケージ一覧から選択してインストールする
    • コマンドから直接インストールする
    • インストール先のディレクトリ構成と設定のしくみ

6.2 統一したインタフェースでの操作

  • 候補選択型インタフェース──Anything
    • インストールする
    • 利用可能にする
    • ファイルを開く・バッファを切り替える
    • キーバインドを一覧表示する──describe-bindings
    • 過去の履歴からペーストする──anything-show-kill-ring
    • moccurを利用する──anything-c-moccur

6.3 入力の効率化

  • 補完入力の強化──Auto Complete Mode
    • インストールする
    • 利用可能にする
    • 補完候補をポップアップ&絞り込む

6.4 検索と置換の拡張

  • 検索結果のリストアップ──color-moccur
    • インストールする
    • 利用可能にする
    • 代表的なコマンド
    • マルチバッファを検索し結果をリストアップする
    • カレントバッファを検索し結果をリストアップする
  • moccurの結果を直接編集──moccur-edit
    • インストールする
    • 利用可能にする
    • mocccurの結果を編集する
    • 編集を終了したときにファイルを自動保存する
  • grepの結果を直接編集──wgrep
    • インストールする
    • 利用可能にする
    • grepの結果を編集する

6.5 さまざまな履歴管理

  • 編集履歴の記憶──undohist
    • インストールする
    • 利用可能にする
    • ファイルを閉じたあとにアンドゥする
  • アンドゥの分岐履歴──undo-tree
    • インストールする
    • 利用可能にする
    • 樹形図を見ながらアンドゥする
  • カーソルの移動履歴──point-undo
    • インストールする
    • 利用可能にする
    • カーソル位置を戻す/やりなおす

6.6 ウィンドウ管理

  • 分割状態を管理──ElScreen
    • インストールする
    • 利用可能にする
    • スクリーンを作成する
    • スクリーンを移動する
    • 代表的なキーバインド

6.7 メモ・情報整理

  • メモ書き・ToDo管理──howm
    • インストールする
    • 利用可能にする
    • howm-menuを起動する
    • メモを書く
    • 保存と同時に閉じる
  • アウトラインエディタ──org-mode
    • アウトライン編集機能
    • 箇条書きなどを入力する
    • 表を入力する

6.8 特殊な範囲の編集

  • 矩形編集──cua-mode
    • 利用可能にする
    • 各行頭に文字を追加する
    • 各行頭の文字を削除する
    • 連番を入力する

7章 開発をさらに効率化する拡張機能

7.1 各種言語の開発環境

  • HTML
    • html-mode
    • html-modeを利用してタグを入力する
    • html-modeが自動選択されるしくみ
    • nxml-mode
    • nxml-modeをHTML編集のデフォルトモードに
    • nxml-modeで構文チェックする
    • HTML5をnxml-modeで編集する
    • nxml-modeの基本設定
  • CSS
    • cssm-mode
    • cssm-modeの基本設定
    • auto-completeによる補完を利用する
  • JavaScript
    • 標準のjs-mode
    • 構文チェック機能を備えたjs2-mode
    • js2-modeをインストールする
    • js2-modeが持つインデントの不具合を解決する
  • PHP
    • php-mode
    • オンラインドキュメントを利用する
    • php-modeのインデントを調整する
    • PHP補完入力──php-completion
  • Perl
    • cperl-mode
  • [Column] 便利なエイリアス
    • cperl-modeのインデントを調整する
    • yaml-mode
    • Perl補完入力──perl-completion
  • Ruby
    • ruby-modeのインデントを調整する
    • Ruby編集用の便利なマイナーモードを利用する
    • Emacsからirbを利用する──inf-ruby
  • Python
    • python-mode.el
    • PyChekerで構文をチェックする
    • そのほかの構文チェックツール──pep8,pyflakes,flake8,pylint
  • C/C++
    • cc-mode
    • cc-mode付属のマイナーモード
    • c-mode-common-hookとそれぞれのフック

7.2 Flymakeによる文法チェック

  • Flymakeを利用できる言語
  • PerlのFlymake設定から学ぶ
  • C言語系
    • Makefileがあれば利用し,なければ直接コマンドを実行する
  • XMLとHTML
  • JavaScript
    • jslをインストールする
    • jslを利用可能にする
  • Ruby
  • Python

7.3 タグによるコードリーディング

  • Etags以外のタグ作成プログラム
  • gtagsとEmacsの連携
    • gtags.elをインストールする
    • gtags-modeの使い方
  • ctagsとEmacsの連携
    • ctags.elをインストールする
  • Anythingとタグの連携
    • anything-for-tagsコマンドを作成する

7.4 フレームワーク専用拡張機能

  • Rinari──Ruby on Rails Minor Mode for Emacs
    • インストールする
    • ナビゲーション機能でファイルを移動する
    • よく利用するRinariコマンド
  • CakePHP Minor Mode──emacs-cake
    • インストールする
    • ナビゲーション機能でファイルを移動する
    • auto-completeと連携する

7.5 特殊な文字の入力補助

  • 絵文字の入力補助──emoji.el
    • インストールする
    • 利用する

7.6 差分とマージ

  • diffによる差分表示──M-x diff
  • Ediffによる差分表示──M-x ediff
    • 利用する
    • 同一フレーム内にコントロールパネルを表示する
    • キーバインド一覧
  • Ediffによるパッチの適用──M-x epatch
  • Ediffによるマージ──M-x ediff-merge

7.7 Emacsからデータベースを操作

  • データベースへの接続
    • MySQLへ接続する──sql-interactive-mode
  • sql-modeとの連携

7.8 バージョン管理

  • Emacs標準のバージョン管理機能
  • Subversionフロントエンド──psvn
    • インストールする
    • 利用する
  • Gitフロントエンド──Egg
    • インストールする
    • 利用する

7.9 シェルの利用

  • シェルコマンドの実行──M-!
    • カレントファイルへ結果を出力する──C-u M-!
    • バッファの内容を標準入力として利用する──M-|
  • ターミナルの利用──multi-term
    • インストールする
    • 利用する

7.10 TRAMPによるサーバ接続

  • sudo,suによる編集
  • バックアップファイルを作成しない

7.11 ドキュメント閲覧・検索

  • Emacs版manビューア(WoMan)の利用
    • 利用可能にする
  • Anythingによるman検索

Appendix 最新情報を入手するには

A.1 開発状況

  • フリーソフトウェアとしてのEmacs
  • ソースコードリポジトリ
    • Bazaarを利用してソースコードを取得する
    • Gitを利用してソースコードを取得する

A.2 開発版の試用

  • 開発版のビルド
    • READMEを読む
    • configureファイルを作成する

A.3 新しい情報に触れるには

  • メーリングリスト
  • EmacsWiki──世界のEmacsコミュニティ
  • メーリングリスト,Wiki,その先へ
  • [Column] Google Mapsも使えるEmacs

著者プロフィール

大竹智也(おおたけともや)

1983年生まれ。起業家、およびWebエンジニア。著書に『[改訂新版]Emacs実践入門』、『Atom実践入門』、『CircleCI実践入門』(共に技術評論社)がある。

Blog:https://blog.tomoya.dev/
𝕏:@tomoyaton