はじめに
Emacsのコマンドって覚えるの大変...
実際に練習してもなかなか覚えられないと思うので、すぐに見れるようにまとめてみた
後から見つけた神サイト
Emacsチートシート
目次
基本コマンド
移動系
削除系
選択・コピー・ペースト
分割機能
検索系
モード
置換モード
ディレクトリモード
おまけ
縦・横にwindowをn分割にする。
tabを一括挿入・削除
基本コマンド
名前 | キーバインド |
---|---|
ファイルを開く | C-x C-f |
シェルを開く | C-x z |
Emacsを閉じる | C-x C-c |
Emacsから抜ける | C-z |
Emacsに戻る | fg |
戻る | C-x u |
キャンセル | C-x g |
困ったらC-x g これが最強
移動系
名前 | キーバインド |
---|---|
← | C-b |
→ | C-f |
↑ | C-p |
↓ | C-n |
最初 | M-< |
最後 | M-> |
次ページ | C-v |
前ページ | C-u |
行頭 | C-a |
行末 | C-e |
削除系
名前 | キーバインド |
---|---|
削除 | C-d |
delete | C-h |
選択・コピー・ペースト
名前 | キーバインド |
---|---|
選択 | C-space |
全選択 | C-a |
コピー | M-y |
カット | C-y |
ペースト | C-y |
分割機能
名前 | キーバインド |
---|---|
縦に分割 | C-x 2 |
横に分割 | C-x 3 |
window移動(次) | C-x o |
window移動(後) | C-x p |
window最大化 | C-x 1 |
windowを閉じる | C-x 0 |
検索系
名前 | キーバインド |
---|---|
行に移動 | C-x g |
検索 | C-s 文字 |
次の候補 | C-s |
前の候補 | C-r |
モード
名前 | キーバインド |
---|---|
置換モード | M-% |
ディレクトリモード | C-x C-f |
バッファーモード | C-x b |
置換モード
名前 | キーバインド |
---|---|
許可 | Space,y |
拒否 | n |
全部拒否 | ! |
抜ける | q |
ディレクトリモード
名前 | キーバインド |
---|---|
戻る | ^ |
ファイル作成 | C-x C-f ファイル名 |
ディレクトリ作成 | + ディレクトリ名 |
マークつける | m |
マーク削除 | u |
マーク全削除 | U |
コピー | C |
名前変更/移動 | R |
削除 | D |
ゆっくり慣れていこう!!
おまけ
キーバインドは実は好きなように増やせるんです!
いくつか自分で作った(by Chatgpt)のコマンドがあるので
よければ使ってみてください
縦・横にwindowをn分割にする。
emacsで以下のファイルを開く
~/.emacs.d/init.el
ここで一番下まで動かし(M->)、以下の文章をそのまま入力
;現在のウィンドウを縦方向にN分割する。
(defun split-current-window-vertically (n)
(interactive "n縦に分割する数を入力してください: ")
(let ((i 1))
(while (< i n)
(split-window-below) ;; 横分割
(setq i (1+ i)))
(balance-windows)))
;現在のウィンドウを横方向にN分割する。
(defun split-current-window-horizontally (n)
(interactive "n横に分割する数を入力してください: ")
(let ((i 1))
(while (< i n)
(split-window-right) ;; 縦分割
(setq i (1+ i)))
(balance-windows)))
;; キーバインドの設定
(global-set-key (kbd "C-x v") 'split-current-window-vertically)
(global-set-key (kbd "C-x h") 'split-current-window-horizontally)
これでemacsを閉じてひらけばOK
#縦方向に4つに分割
C-x v 4
#横方向に4つに分割
C-x h 4
7ぐらいまでならできる。
tabを一括挿入・削除
コード書く時にtab挿入削除多いですよね、
for忘れたりいらなくなったりした時は特に...
それ用です
挿入は空白4つ
削除は文頭4つ削除なので、そこだけお気をつかて
実装は先ほどと同じなのでコードだけ
;tabを挿入
(defun insert-tab-to-region (start end)
(interactive "r")
(save-excursion
(goto-char start)
(while (< (point) end)
(insert " ")
(forward-line 1))))
;行頭のタブを削除
(defun remove-tab-from-region (start end)
(interactive "r")
(save-excursion
(goto-char start)
(while (< (point) end)
(when (looking-at "^\t") ; 行頭がタブの場合
(delete-char 1))
(forward-line 1))))
;キーバインド設定
(global-set-key (kbd "C-x ti") 'insert-tab-to-region)
(global-set-key (kbd "C-x tr") 'remove-tab-from-region)
#タブを行頭に挿入
C-x t-i
#タブを行頭から削除
C-x t-r