そのまま使える、コレが私のEmacs設定だ！2024版

こんにちは！
今回は、Emacsの基本的なチートシートと、私が日々使用している.init.elの設定をご紹介します。
この記事を読めば、Emacsの基本操作から効率的な設定まで、すぐに実践できるはずです。

## Emacsチートシート

### 基本モード
- ノーマルモード: デフォルトモード。移動、編集、コマンド実行などの操作を行う。
- インサートモード: テキスト入力モード。Ctrl-x Ctrl-eで有効に。
- ビジュアルモード: テキスト選択モード。Ctrl-spaceで開始。
- コマンドモード: M-xでコマンド実行。

### モード切り替え
- Ctrl-g: 任意の操作をキャンセルしてノーマルモードに戻る。
- Ctrl-x Ctrl-f: ファイルを開く。
- Ctrl-x Ctrl-s: ファイルを保存。
- Ctrl-x Ctrl-c: Emacsを終了。

### 基本的な編集操作
- Ctrl-d: カーソル位置の文字を削除。
- Ctrl-k: カーソル位置から行末まで削除。
- Ctrl-y: ペースト。
- Ctrl-/: 直前の操作を取り消し（Undo）。

### カーソル移動
- Ctrl-f: 右へ移動。
- Ctrl-b: 左へ移動。
- Ctrl-n: 下へ移動。
- Ctrl-p: 上へ移動。
- M-f: 次の単語の先頭へ移動。
- M-b: 前の単語の先頭へ移動。
- Ctrl-a: 行頭へ移動。
- Ctrl-e: 行末へ移動。

### ファイル操作
- Ctrl-x Ctrl-f: ファイルを開く。
- Ctrl-x Ctrl-s: 保存。
- Ctrl-x Ctrl-w: 名前を付けて保存。
- Ctrl-x k: バッファを閉じる。

### 検索と置換
- Ctrl-s: 前方検索。
- Ctrl-r: 後方検索。
- M-%: 置換。

### ウィンドウ操作
- Ctrl-x 2: 垂直分割。
- Ctrl-x 3: 水平分割。
- Ctrl-x 0: 現在のウィンドウを閉じる。
- Ctrl-x o: 次のウィンドウに移動。

### その他の便利な機能
- Ctrl-x u: やり直し（redo）。
- Ctrl-x Ctrl-u: 直前の操作を繰り返す。
- M->: ファイルの末尾へ移動。
- M-<: ファイルの先頭へ移動。

### 高度な編集操作
- M-w: 選択範囲をコピー。
- Ctrl-w: 選択範囲をカット。
- M-u: カーソル位置の単語を大文字に変換。
- M-l: カーソル位置の単語を小文字に変換。

## init.elのおすすめ設定と解説

以下に、私が日々使用している.init.elの設定を紹介します。
これらの設定はEmacsの使い勝手を大幅に向上させる！（きっと！）

```emacs-lisp
;; パッケージ管理の設定
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
                         ("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize)

;; use-packageのインストール
(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))

(require 'use-package)

;; 基本設定
(setq inhibit-startup-message t)       ;; スタートアップメッセージを非表示
(setq make-backup-files nil)           ;; バックアップファイルを作成しない
(setq auto-save-default nil)           ;; 自動保存を無効化
(global-display-line-numbers-mode t)   ;; 行番号を表示

;; パッケージ設定
(use-package ivy
  :ensure t
  :bind (("C-s" . swiper)
         ("C-c C-r" . ivy-resume)
         ("M-x" . counsel-M-x)
         ("C-x C-f" . counsel-find-file))
  :config
  (ivy-mode 1))

(use-package magit
  :ensure t
  :bind (("C-x g" . magit-status)))

(use-package which-key
  :ensure t
  :config
  (which-key-mode))

;; テーマ
(use-package doom-themes
  :ensure t
  :config
  (load-theme 'doom-one t))

;; カスタム関数
(defun open-init-file()
  (interactive)
  (find-file user-init-file))
(global-set-key (kbd "C-c I") 'open-init-file)

;; キーマッピング
(global-set-key (kbd "C-x C-b") 'ibuffer)
(global-set-key (kbd "M-o") 'other-window)
(global-set-key (kbd "C-c r") 'replace-string)

;; インデント設定
(setq-default indent-tabs-mode nil)  ;; タブをスペースに変換
(setq-default tab-width 4)           ;; タブ幅を4に設定
(setq indent-line-function 'insert-tab)

;; スペルチェック
(use-package flyspell
  :ensure t
  :config
  (add-hook 'text-mode-hook 'flyspell-mode)
  (add-hook 'prog-mode-hook 'flyspell-prog-mode))

;; 自動補完
(use-package company
  :ensure t
  :config
  (global-company-mode))

;; シンタックスハイライト
(global-font-lock-mode t)

;; 行末の空白を可視化
(setq show-trailing-whitespace t)

;; マウス操作の有効化
(xterm-mouse-mode 1)

;; 80文字目にラインを表示
(use-package fill-column-indicator
  :ensure t
  :config
  (setq fci-rule-column 80)
  (setq fci-rule-width 1)
  (setq fci-rule-color "darkgray")
  (add-hook 'prog-mode-hook 'fci-mode))
```

## 設定の解説

1. 基本設定: スタートアップメッセージの非表示、バックアップファイルの無効化、行番号の表示などを設定しています。
2. パッケージ設定: use-packageを使用してIvy、Magit、Which-key、Doom-themesなどのパッケージを管理しています。
3. カスタム関数: open-init-file関数を作成し、init.elを簡単に開けるようにしています。
4. キーマッピング: よく使うコマンドをカスタムキーバインディングに割り当てています。
5. インデント設定: タブをスペースに変換し、幅を4に設定しています。
6. スペルチェック: flyspellを使用してスペルチェックを有効にしています。
7. 自動補完: companyを使用して自動補完を有効にしています。
8. シンタックスハイライト: global-font-lock-modeを有効にしてシンタックスハイライトを行っています。
9. 行末の空白を可視化: 不要な空白を見つけやすくするために設定しています。
10. マウス操作の有効化: xterm-mouse-modeを有効にしてマウス操作を可能にしています。
11. 80文字目のライン表示: fill-column-indicatorを使用して80文字目にラインを表示しています。

## まとめ

今回はEmacsについてまとめました。
これらの設定を活用することで、Emacsをより効率的に使用することができます。
ぜひ、自分の好みに合わせてカスタマイズしてみてください。
Emacsの世界は奥が深く、探求し続けることができます。Happy Hacking!