
こんにちは。iQeda [@iQeeeda] です。
今回は (とっつきにくい) Emacs コマンドについて解説したいと思います!
- 前半は、Emacs の基本的なコマンド入力方法・設定について
- 後半は、コマンドを一覧で解説しています
Mac のキーボード配列で説明していますが、
Emacs コマンド一覧は OS 関係なく共通ですので参考にしてみてください。
【Mac】Emacs の基本的なコマンド入力方法

まず Emacs で軸となるキー 2 つを押さえてください。
⌃(control) キーESCまたは⌥(option) キー- ※
⌥を使う場合、後述するコマンドラインツール設定が必要
- ※
C コマンド – Control
⌃ は Emacs 上で C コマンドとしての機能を持ちます。⌃ キーを押しっぱなしで C コマンドとして動きます
具体例
⌃ キーを押しながら x キーを同時押しする
C-x と表現することができます。M コマンド – Meta
ESC と ⌥ は Emacs 上で M コマンドとしての機能を持ちます。ESC と ⌥ は M コマンドとしての機能は同じですが「操作方法」が異なります。
ESCは押して離すと M コマンドとして動きます⌥は押しっぱなしで Mコマンドとして動きます
具体例
ESCを押して離して、そのあとにwキーを押す- もしくは
⌥キーを押しながらwキーを同時押し
M-wと表現することができます。【Mac】おすすめのコマンドライン・キーボード設定

⌥ キーを Meta キーとして使いたい場合
⌥ を M として使いたい場合、コマンドラインツールの設定が必要になります。
Terminal の場合
Terminal > 環境設定 > プロファイル > キーボード を開き、
「メタキーとしてOptionキーを使用」のチェックをつけましょう

iTerm2 の場合
iTerm2 > Preferences > Profiles > Keys を開き、Left ⌥ Key や Right ⌥ Key に 「Esc+」のチェックをつけましょう。

iTerm2 ってなんやねん…な方
こちらの記事で解説しているので参考にしてみてください。
Caps Lock を ⌃ に変更した方が便利
あなたが使っているキーボードのa の左側のキーは何ですか?
⌃ の場合、設定不要
ホームポジションから、ちょっと小指を左にズラせば ⌃ (C) ですね。
こちらは Emacs の操作がしやすいと思います。
Caps Lock の場合
US キーボードなど使っている場合は Caps Lock キーがあるはずです。
Caps Lock を使わなければ ⌃ (C) キーを割り当てた方が操作しやすくなります。変更方法
環境設定 > キーボード > 修飾キー を開き、
「Caps Lock (⇧) キー」 の項目で ⌃ Control を選択してください。

Emacs コマンド一覧
Emacs の画面名は Window や Buffer という名称が使われます。
この先、こういった用語で解説します。わからない方は以下の記事を読んでみてください。
基本
| 処理 | コマンド | 備考 |
|---|---|---|
| Emacs 起動 | emacs | |
| 既存ファイルを Emacs で開く | emacs [ファイル名] | |
| Emacs 終了 | C-x C-c | |
| 入力中のコマンドから抜ける | C-g |
ファイル操作
| 処理 | コマンド | 備考 |
|---|---|---|
| ファイルを開く、新規作成 | C-x C-f | file |
| ファイル保存 | C-x C-s | save |
| 別名でファイル保存 | C-x C-w | write |
カーソル移動
| 処理 | コマンド | 備考 |
|---|---|---|
| 右 | C-f | forward |
| 左 | C-b | back |
| 上 | C-p | previous |
| 下 | C-n | next |
| 行頭 | C-a | ahead |
| 行末 | C-e | end |
| ファイルの先頭 | M-< | |
| ファイルの最後 | M-> | |
| 次のページへ移動 | C-v | |
| 前のページへ移動 | M-v | |
| 次の段落へ移動 | M-} | |
| 前の段落へ移動 | M-{ | |
| 次の文へ移動 | M-e | |
| 前の文へ移動 | M-a | |
| 次の単語へ移動 | M-f | |
| 前の単語へ移動 | M-b | |
| 任意の行にジャンプ | M-g g [行番号] Enter | 行番号の表示は設定が必要 |
【Tips】文字削除のコマンド設定をしておこう
init.el に下記設定をすれば C-h で文字削除ができるようになります。
よく Emacs 以外でもサポートされているコマンドなので設定しておくと便利です。
(define-key global-map "\C-h" 'delete-backward-char)
ファイル編集
| 処理 | コマンド | 備考 |
|---|---|---|
| 改行 | C-m / C-j | |
| 範囲指定開始 | C-@ | |
| カーソル位置からの単語選択 | M-F / M-@M-B | forward back |
| 全選択 | C-x h | |
| コピー | M-w | |
| カット | C-w | |
| 貼り付け | C-y | yank |
| 行末まで文字カット | C-k | delete |
| 削除 | C-d | |
| Undo | C-x u / C-_ | |
| コメントアウト | M-; |
検索・置換
デフォルト設定だと大文字小文字の区別をしないので注意してください。
検索を抜けるには Enter もしくは C-g を押してください。
| 処理 | コマンド | 備考 |
|---|---|---|
| 前方検索 | C-s | search |
| 後方検索 | C-s C-r | reverse |
| 置換 | M-% | |
| 置換の選択肢: yes | y | |
| 置換の選択肢: no | n | |
| 置換の選択肢: all | n! | |
| 置換の選択肢: quit | q |
Window の分割
| 処理 | コマンド | 備考 |
|---|---|---|
| 上下に分割する | C-x 2 | |
| 左右に分割する | C-x 3 | |
| 今のWindowを閉じる | C-x 0 | |
| 全部の分割を解除 | C-x 1 | |
| Window 間の移動 | C-x o |
複数 Window 操作
| 処理 | コマンド | 備考 |
|---|---|---|
| 別 Window を起動 | C-x 5 2 | |
| 現在の Window 以外の全てを閉じる | C-x 5 1 | |
| 現在の Window のみ閉じる | C-x 5 0 |
Buffer パターン検索
| 処理 | コマンド | 備考 |
|---|---|---|
| バッファ名を指定して切り替える | C-x b | |
| Buffer パターン検索の次の見出しに移動 | C-o | |
| Buffer パターン検索終了 | C-g |
Buffer リスト
Buffer 名の前後に「*」が入っている場合、
その Buffer は Emacs のシステムファイルに属していることを表します
| 処理 | コマンド | 備考 |
|---|---|---|
| 開いている Buffer リストを見る | C-x C-b | |
| 選択したバッファを開く | f | |
| 上 | C-n | next |
| 下 | C-p | previous |
| 開いている Buffer リストを閉じる | q | quit |
フラグ処理
| 処理 | コマンド | 備考 |
|---|---|---|
| Buffer リスト削除フラグ | d / k | delete flag |
| ファイル保存フラグ | s | save flag |
| フラグの削除 | u | undo |
| フラグを実行 | x | execute |
フラグを使う状況について
たとえば、複数 Buffer でファイル編集をしている場合、
Buffer を切り替えて C-x C-s でファイル保存をかけていくのは面倒です。
また、保存し忘れる…というミスも発生しそうですね。
なのでファイル毎に「ファイル保存フラグ」を立てて、フラグ実行すると便利な場合があります。
Kill buffer
Buffer 消去用の Buffer です。特定の Buffer を閉じたいときに使います。
| 処理 | コマンド | 備考 |
|---|---|---|
| Kill buffer | C-x k | kill |
関連記事
Emacs ロードマップ
Emacs カスタマイズ方法
お仕事ください!
僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。 なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。
カテゴリ「Develop」の最新記事

TerraformによるLinodeインスタンス新規作成サンプル
【Fingerprint】CircleCIがSSHできない問題解決
【Laravel】セッションタイムアウト後のログイン処理で前回URLに遷移するバグ修正
M1 Mac(2021)でanyenv/phpenvの初期設定!
コメント