# Emacs クイックリファレンス

*ナビゲーション、編集、バッファ、検索、Org モード、パッケージ*

> Source: GNU Emacs Manual (gnu.org/software/emacs) · MIT

## ナビゲーション

### カーソル移動

| Command | Description |
|---------|-------------|
| `C-f / C-b` | 1文字前 / 後ろに移動 |
| `M-f / M-b` | 1単語前 / 後ろに移動 |
| `C-n / C-p` | 次の行 / 前の行 |
| `C-a / C-e` | 行頭 / 行末 |
| `M-a / M-e` | 文の先頭 / 末尾 |
| `C-v / M-v` | 1ページ下 / 上にスクロール |
| `M-< / M->` | バッファの先頭 / 末尾 |
| `M-g g` | 行番号にジャンプ |

### 画面の位置調整

| Command | Description |
|---------|-------------|
| `C-l` | 画面を再センタリング（上/中/下をサイクル） |
| `C-M-l` | ウィンドウを自動的に再配置 |

## 編集

### Kill とヤンク（切り取りと貼り付け）

| Command | Description |
|---------|-------------|
| `C-k` | 行末まで Kill |
| `C-w` | リージョンを Kill（切り取り） |
| `M-w` | リージョンをコピー |
| `C-y` | ヤンク（貼り付け） |
| `M-y` | ヤンク後に Kill リングをサイクル |
| `C-d` | 前の文字を削除 |
| `M-d` | 前方の単語を Kill |
| `M-DEL` | 後方の単語を Kill |

### アンドゥとトランスポーズ

| Command | Description |
|---------|-------------|
| `C-/ または C-_` | アンドゥ |
| `C-g C-/` | リドゥ（アンドゥのアンドゥ） |
| `C-t` | 文字を入れ替え |
| `M-t` | 単語を入れ替え |
| `C-x C-t` | 行を入れ替え |

### 選択

| Command | Description |
|---------|-------------|
| `C-SPC` | マークを設定（選択開始） |
| `C-x h` | バッファ全体を選択 |
| `M-h` | 段落を選択 |
| `C-x C-x` | ポイントとマークを交換 |

## バッファとウィンドウ

### バッファ

| Command | Description |
|---------|-------------|
| `C-x b` | バッファを切り替え |
| `C-x C-b` | すべてのバッファを一覧表示 |
| `C-x k` | バッファを Kill（閉じる） |
| `C-x LEFT / RIGHT` | 前 / 次のバッファ |

### ウィンドウ

| Command | Description |
|---------|-------------|
| `C-x 2` | ウィンドウを水平分割 |
| `C-x 3` | ウィンドウを垂直分割 |
| `C-x 0` | 現在のウィンドウを閉じる |
| `C-x 1` | 他のすべてのウィンドウを閉じる |
| `C-x o` | 別のウィンドウに切り替え |
| `C-x ^` | ウィンドウを垂直方向に拡大 |
| `C-x {` | ウィンドウを水平方向に縮小 |

### フレーム

| Command | Description |
|---------|-------------|
| `C-x 5 2` | 新しいフレームを作成 |
| `C-x 5 0` | 現在のフレームを削除 |
| `C-x 5 o` | 別のフレームに切り替え |

## 検索と置換

### インクリメンタル検索

| Command | Description |
|---------|-------------|
| `C-s` | 前方検索（インクリメンタル） |
| `C-r` | 後方検索（インクリメンタル） |
| `C-s C-s` | 最後の検索を前方に繰り返す |
| `C-M-s` | 正規表現前方検索 |
| `C-M-r` | 正規表現後方検索 |
| `RET` | 現在位置で検索を終了 |
| `C-g` | 検索をキャンセルして開始位置に戻る |

### 置換

| Command | Description |
|---------|-------------|
| `M-%` | クエリ置換 |
| `C-M-%` | 正規表現クエリ置換 |
| `y` | この一致を置換 |
| `n` | この一致をスキップ |
| `!` | 残りをすべて置換 |
| `q` | 置換を終了 |

## ファイル

### ファイル操作

| Command | Description |
|---------|-------------|
| `C-x C-f` | ファイルを開く |
| `C-x C-s` | 現在のバッファを保存 |
| `C-x C-w` | 名前を付けて保存 |
| `C-x s` | 変更されたすべてのバッファを保存 |
| `C-x C-r` | 読み取り専用でファイルを開く |
| `C-x i` | ポイントにファイル内容を挿入 |

### Dired（ディレクトリエディタ）

| Command | Description |
|---------|-------------|
| `C-x d` | Dired でディレクトリを開く |
| `d / x` | 削除フラグ / 削除を実行 |
| `R` | ファイルの名前変更 / 移動 |
| `C` | ファイルのコピー |
| `+` | ディレクトリを作成 |
| `g` | 一覧を更新 |

## モード

### メジャーモード

| Command | Description |
|---------|-------------|
| `M-x fundamental-mode` | プレーンテキスト編集 |
| `M-x text-mode` | 塗りつぶしとスペルのあるテキスト |
| `M-x prog-mode` | プログラミングモードのベース |
| `M-x python-mode` | Python の編集とインデント |
| `M-x shell-mode` | バッファ内の対話型シェル |

### 便利なマイナーモード

| Command | Description |
|---------|-------------|
| `M-x display-line-numbers-mode` | 行番号の表示を切り替え |
| `M-x auto-fill-mode` | fill カラムで自動折り返し |
| `M-x flyspell-mode` | リアルタイムスペルチェック |
| `M-x column-number-mode` | モードラインにカラムを表示 |
| `M-x whitespace-mode` | 空白を可視化 |
| `M-x electric-pair-mode` | 括弧と引用符を自動で閉じる |

## Org モードの基本

### 構造

| Command | Description |
|---------|-------------|
| `* / ** / ***` | 見出しレベル 1 / 2 / 3 |
| `TAB` | 見出しの表示をサイクル |
| `S-TAB` | グローバルの表示をサイクル |
| `M-RET` | 同じレベルの見出しを挿入 |
| `M-LEFT / M-RIGHT` | 見出しを昇格 / 降格 |
| `M-UP / M-DOWN` | サブツリーを上 / 下に移動 |

### TODO とチェックボックス

| Command | Description |
|---------|-------------|
| `C-c C-t` | TODO 状態をサイクル |
| `C-c C-d` | 期限を設定 |
| `C-c C-s` | 項目をスケジュール |
| `C-c C-c` | チェックボックス [ ] / [X] を切り替え |
| `C-c a` | アジェンダビューを開く |

### リンクとエクスポート

| Command | Description |
|---------|-------------|
| `C-c C-l` | リンクを挿入 / 編集 |
| `C-c C-o` | ポイントのリンクを開く |
| `C-c C-e` | エクスポートディスパッチャ（HTML、PDF など） |

## パッケージ管理

### package.el

| Command | Description |
|---------|-------------|
| `M-x list-packages` | 利用可能なパッケージを参照 |
| `i / d / x` | インストール / 削除 / 実行のマーク |
| `U` | アップグレード可能なすべてをマーク |
| `M-x package-refresh-contents` | パッケージリストを更新 |

### use-package (init.el)

```
(use-package magit
  :ensure t
  :bind ("C-x g" . magit-status))
(use-package company
  :ensure t
  :hook (prog-mode . company-mode))
```

## 設定

### 主要な設定ファイル

| Command | Description |
|---------|-------------|
| `~/.emacs.d/init.el` | メイン設定ファイル |
| `~/.emacs.d/early-init.el` | 早期初期化（GUI の前、Emacs 27+） |
| `~/.emacs.d/custom.el` | Customize で書かれた設定 |

### 一般的な設定

```
(setq inhibit-startup-screen t)
(tool-bar-mode -1)
(set-face-attribute 'default nil :height 120)
(global-display-line-numbers-mode 1)
(setq make-backup-files nil)
```

### ヘルプシステム

| Command | Description |
|---------|-------------|
| `C-h k` | キーバインドを説明 |
| `C-h f` | 関数を説明 |
| `C-h v` | 変数を説明 |
| `C-h m` | 現在のモードを説明 |
| `C-h t` | Emacs チュートリアルを開く |
| `C-h i` | Info ドキュメントを開く |

## よくあるパターン

### 矩形編集

| Command | Description |
|---------|-------------|
| `C-x SPC` | 矩形マークモードを開始 |
| `C-x r k` | 矩形を Kill |
| `C-x r y` | 矩形をヤンク |
| `C-x r t` | 矩形を文字列で置換 |
| `C-x r o` | 空白矩形を挿入 |

### マクロ

| Command | Description |
|---------|-------------|
| `C-x (` | マクロの記録を開始 |
| `C-x )` | マクロの記録を停止 |
| `C-x e` | 最後のマクロを実行 |
| `C-u 10 C-x e` | マクロを 10 回実行 |
| `M-x name-last-kbd-macro` | マクロに名前を付けて再利用 |

### シェルと評価

| Command | Description |
|---------|-------------|
| `M-x shell` | バッファでシェルを開く |
| `M-x eshell` | Emacs Lisp シェル |
| `M-!` | シェルコマンドを実行 |
| `M-x eval-buffer` | バッファ全体を Elisp として評価 |
| `C-x C-e` | ポイント直前の Elisp 式を評価 |
