Emacsサバイバルガイド

はじめに

本書は生き延びるためにEmacsを使う人のためのガイドブックです。

注意

執筆中のため、構成が変わる可能性があります。

お問い合わせ窓口

本書に関しては以下にご連絡ください。

インストール

配布版を使う

ビルドする

TBD.

Emacsの基本操作

バッファ操作

コマンド キーバインド 振る舞い
list-buffers C-x C-b バッファの一覧を表示します。
switch-to-buffer C-x b 選択したバッファを表示します。
next-buffer C-x 次のバッファを表示します。
previous-buffer C-x 前のバッファを表示します。
save-buffer C-x C-s バッファを保存します。
revert-buffer
kill-buffer C-x k 選択したバッファを削除します。
kill-current-buffer 現在のバッファを削除します。
beginning-of-buffer M-<
end-of-buffer M->
rename-buffer 現在のバッファの名称を変更します。

ウィンドウ操作

コマンド キーバインド 振る舞い
delete-window C-x 0 アクティブのウィンドウを削除します。
delete-other-window C-x 1 非アクティブのウィンドウを削除します。
split-window-below C-x 2 アクティブのウィンドウを左右に分割します。カーソルが遷移します。
split-window-right C-x 3 アクティブのウィンドウを上下に分割します。カーソルが遷移します。
find-file-other-window C-x 4 f 別のウィンドウでファイルを表示します。
dired-other-window C-x 4 d 別のウィンドウでディレクトリを表示します。
display-buffer C-x 4 C-o バッファを別のウィンドウで表示します。カーソルは遷移しません。
beginning-of-buffer-other-window M-start バッファの先頭を別ウィンドウで表示します。カーソルが遷移します。
end-of-buffer-other-window M-end バッファの末尾を別ウィンドウで表示します。カーソルが遷移します。
kill-buffer-and-window C-x 4 0 アクティブのウィンドウを削除し、そこに表示されているバッファも削除します。
enlarge-window C-x ^ アクティブのウィンドウの高さを大きくする
enlarge-window-horizontally C-x {
shrink-window-horizontally C-x }
balance-windows C-x +

フレーム操作

コマンド キーバインド 振る舞い
delete-frame C-x 5 0
deltee-other-frames C-x 5 1
make-frame-command C-x 5 2
suspend-frame C-x C-z
other-frame C-x 5 o
switch-to-buffer-other-frame C-x 5 b

Emacs Lisp入門

操作

Emacs Lispを記述する際に便利なコマンドをまとめました。

カーソル操作

S式で有効なカーソル操作

コマンド キーバインド 振る舞い
forward-sexp C-M-f 次のS式に移動します。
backward-sexp C-M-b 前のS式に移動します。
mark-sexp C-M-SPC S式をマーク (範囲選択) します。
kill-sexp C-M-t S式を切り取ります。

リストで有効なカーソル操作

コマンド キーバインド 振る舞い
forward-list C-M-n 同階層内にある次のリストに移動します。
backward-list C-M-p 同階層内にある前のリストに移動します。
up-list 未設定 上層のリストに移動します。カーソルを前方に移動します。
backward-up-list C-M-u 上層のリストに移動します。カーソルを後方に移動します。
down-list C-M-d 下層のリストに移動します。

関数で有効なカーソル操作

コマンド キーバインド 振る舞い
beginning-of-defun C-M-a
end-of-defun C-M-e

シンボル検索

find

コマンド キーバインド 振る舞い
find-function 未設定 関数を検索します。
find-variable 未設定 変数を検索します。
find-library 未設定 ライブラリを検索します。

xref

コマンド キーバインド 振る舞い
xref-find-defitions 未設定 定義にジャンプします。
xref-pop-maker-stack 未設定 ジャンプする前の場所に戻ります。

help

コマンド キーバインド 振る舞い
describe-symbol C-h o シンボルのドキュメントヘルプを表示します。
describe-variable C-h v 変数のドキュメントヘルプを表示します。
describe-function C-h f 関数のドキュメントヘルプを表示します。

バッファ操作

コマンド キーバインド 振る舞い
eval-defun C-M-x
eval-buffer
eval-last-sexp C-x C-e
eval-region
eval-expression M-:

そのほか

コマンド キーバインド 振る舞い
narrow-to-defun C-x n d カーソル位置のdefunのみ表示を絞ります。
widen C-x n w 表示の絞り込みを解除します。

ロギング

Emacs Lisp向けのロギングライブラリを以下に記します。

elog.el

1
2
3
(require 'elog)
(elog-open-log message "MSG")
(MSG-log elog-info "%s" "lsp--text-document-did-open")

閲覧箇所をブックマークする - bookmark.el

bookmark.el - Emacs source repository

様々なファイルを閲覧していると「あのファイルはどこにあっただろうか」と忘れてしまうことがあります。 そのため、閲覧箇所を記録する機能を提供する bookmark.el を活用して対処します。 なお、bookmark.elはEmacs標準搭載の機能です。

主要コマンド

コマンド キーバインド 振る舞い
bookmark-set C-x r m カーソルの位置をブックマークします。
bookmark-jump C-x r b 選択したブックマークにジャンプします。
bookmark-bmenu-list C-x r l すべてのブックマークの一覧を表示します。
bookmark-save 未設定 ブックマークしたものを変数 bookmark-default-file のファイルに保存します。

変数 bookmark-default-file の既定値は .emacs.d/bookmarks です。

ファイル保存のタイミング

bookmark.elの既定動作ではEmacsの終了時にブックマークをファイルに保存します。 ブックマークした時点で保存をしたい場合は、 bookmark-save-flag に1を指定します。

yas

デフォルト 追加バインド コマンド 説明 C-c & C-n C-x i i yas-new-snippet 新規スニペットの作成 C-c & C-s C-x i n yas-insert-snippet スニペットの選択/挿入 C-c & C-v C-x i v yas-visit-snippet スニペットの編集 C-x i l yas-describe-tables 現在のメジャーモードで選択可能なスニペットの一覧表示 C-x i g yas-reload-all スニペットの再読み込み

メモ

マジックコメント

TBD.

C-c C-,