カーソル操作
コマンド
<left>は矢印左を示します。 <right>は矢印右を示します。
-
beginning-of-buffer (
M-<
)- バッファの先端に移動します。
-
end-of-buffer (
M->
)- バッファの終端に移動します。
-
forward-word (
M-f
)- 次の単語に移動します。
-
backward-word (
M-b
)- 前の単語に移動します。
-
forward-sentence (
M-e
)- 次のセンテンス(参照:26.2 Sentences (GNU Emacs Manual))に移動します。
-
backward-sentence (
M-a
)- 前のセンテンスに移動します。
-
forward-paragraph (
M-}
)- 次の段落に移動します。
-
backward-paragraph (
M-{
)- 前の段落に移動します。
-
forward-sexp (
C-M-f
orC-M-<right>
)- カーソルを次の評価式に移動します。
-
backward-sexp (
C-M-b
orC-M-<lefqt>
)- カーソルを前の評価式に移動します。
-
mark-sexp (
C-M-@
orC-M-SPC
)- 評価式を範囲選択します。
-
transpose-sexps (
C-M-t
)- 評価式の位置を入れ替えます。
-
kill-sexp (
C-M-k
)- 評価式を切り抜きます。
-
beginning-of-defun (
C-M-a
)- カーソルを関数の先頭に移動します。
-
end-of-defun (
C-M-e
)- カーソルを関数の末尾に移動します。
- 正確には関数の次の行に移動します。
-
mark-defun (
C-M-h
)- 関数全体を範囲選択します。
-
forward-list (
C-M-n
)- カーソルを括弧内の次のグループに移動します。
- ただし、カーソルが括弧開きに位置する場合は括弧閉じに一度立ち寄ります。
-
backward-list (
C-M-p
)- カーソルを括弧内の前のグループに移動します。
- ただし、カーソルが括弧閉じに位置する場合は括弧開きに一度立ち寄ります。
-
backward-up-list (
C-M-u
)- カーソルを1階層上に位置する括弧に移動します。
-
down-list (
C-M-d
)- カーソルを1階層下に位置する括弧内に移動します。
transpose-sexpsの補足
以下は評価式の入れ替えの例です。
|
|
transpose-sexps (C-M-t
) を実行すると次になります。
|
|
バッファ操作
コマンド
-
save-buffer (
C-x C-s
)- バッファの保存
-
list-buffers (
C-x C-b
)- バッファリストを表示
-
switch-to-buffer (
C-x b
)- バッファの切り換え
-
kill-buffer (
C-x k
)- バッファの削除
-
kill-buffer-and-window (
C-x 4 0
)- バッファ削除とウィンドウ消去
-
previous-buffer (
C-x C-<left>
orC-x <left>
)- 前のバッファに切り替え
-
next-buffer (
C-x C-<right>
orC-x <right>
)- 次のバッファに切り替え
バッファの評価
初期設定ファイルに変更を加え,それをすぐに反映させる場合 (emacsの現在のバッファがinit.elだったのみ有効)
|
|
変更した部分のみ,すぐに反映させる場合
|
|
バッファリストのMR欄で表示される記号の意味
Mark | function |
* | バッファの変更を保存していない |
. | バッファがウィンドウで表示中 |
資料
TBD.
ウィンドウ操作
コマンド
-
delete-window (
C-x 0
)- 現在のウィンドウを削除する
-
delete-other-windows (
C-x 1
)- 現在のウィンドウ以外を削除する
-
split-window-below (
C-x 2
)- ウィンドウを上下の2つに分ける
-
split-window-right (
C-x 3
)- ウィンドウを左右の2つに分ける
-
switch-to-buffer-other-window (
C-x 4 b
)- 新しいウィンドウに選択したバッファを表示する
-
delete-frame (
C-x 5 0
)- 現在のフレームを削除する
-
delete-other-frames (
C-x 5 1
)- 現在のフレーム以外を削除する
-
other-window (
C-x o
)- ウィンドウの切り換え
-
enlarge-window (
C-x ^
)- ウィンドウの枠を広げる
-
enlarge-window-horizontaly (
C-x }
)- ウィンドウの枠を広げる
-
shrink-window
- ウィンドウの枠を狭める
- 既定のキーバインディングはない
- 筆者は
C-x w s v
に割り当てた
-
shrink-window-horizontaly (
C-x {
)- ウィンドウの枠を狭める
-
maximize-window
- ウィンドウを可能な限り最大化
- 既定のキーバインディングはない
- 筆者は
C-x w }
に割り当てた
-
minimize-window
- ウィンドウを可能な限り最小化
- 既定のキーバインディングはない
- 筆者は
C-x w {
にひとまず割り当てた
文字コード
コマンド
-
set-buffer-file-coding-system (
C-x RET f coding RET
)- 表示中のバッファの文字コードを変更します。
-
universal-coding-system-argument (
C-x RET c coding RET
)- バッファを開く際に文字コードを指定します。
-
revert-buffer-with-coding-system (
C-x RET r coding RET
)- 表示中のバッファを文字コードを指定して開き直します。
文字サイズ
コマンド
-
text-scale-adjust (
C-x C-+
orC-x C-=
orC-x C--
orC-x C-0
)- 文字サイズを変更する。現在のバッファのみに影響する。
-
global-text-scale-adjust (
C-x C-M-+
orC-x C-M-=
orC-x C-M--
orC-x C-M-0
)- 文字サイズを変更する。すべてのバッファに影響する。
-
いずれかのキーバインド入力でミニバッファに文字サイズ変更のキーが表示される。
+
,=
で文字を大きく-
で文字を小さく0
で文字を元の大きさに戻すESC
で終了
テキスト編集
大文字と小文字
Key | Action | 説明 | Note |
M-l | downcase-word | ポイントに続く単語を小文字に変換します | |
M-u | upcase-word | ポイントに続く単語を大文字に変換します | |
M-c | capitalize-word | ポイントに続く単語を大文字で始めます | |
C-x C-l | downcase-region | リージョンを小文字にします | |
C-x C-u | upcase-region | リージョンを大文字にします |
ソースコード整形
コマンド
- M-x indent-region
- M-x align-regex
- M-x align-entire
矩形選択 - cua-rect.el
-
cua-rectangle-mark-mode (
M-RET
)- 矩形選択の開始
- org-modeの
org-meta-return
と競合する可能性あり
-
cua-set-rectangle-mark (
C-<return>
)- 矩形選択の開始
キーバインド 説明 M-b 矩形をスペースで埋める M-f 矩形を入力された1文字で埋める M-i 矩形の各行の数値をインクリメントする M-k 矩形をキルする M-n 矩形の各行にインクリメントされた数値をフォーマットして挿入する M-r 矩形を置換する M-t 矩形を入力された文字列で埋める M-パイプ 矩形を入力としてシェルコマンドを実行する。引数が指定されている場合はシェルコマンドの結果が矩形に埋まる M-/ 矩形の正規表現にマッチする行をハイライト
ブックマーク - 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を指定します。
dired-mode (ファイラ)
コマンド
以下のコマンドで dired
バッファを呼び出します。
- dired (
C-x d
) - dired-other-window (
C-x 4 d
) - dired-jump (
C-x C-j
) - dired-jump-other-window (
C-x 4 C-j
)
以下のコマンドは dired
バッファで有効です。
コマンド | 動作 |
q | ディレクトリエディタ終了 |
p | ディレクトリエディタ内を上に移動 |
n | ディレクトリエディタ内を下に移動 |
g | 画面を更新 |
f | カーソル位置のディレクトリに移動する |
+ | ディレクトリを作成する |
d | カーソル位置に削除マークを付ける |
x | 削除マークを付けたものを消去する |
m | コピーしたいファイルを選択 |
C | コピー |
R | 移動および名称変更 |
Z | 圧縮 / 展開 |
u | マークを外す |
U | 全てのマークを外す |
\^ | 親ディレクトリに移動する (\はエスケープ) |
EasyPG - epg.el
EasyPG (epg.el)
はEmacsからGnuPGを操作してPGPによる暗号、復号を実現する機能です。同機能はEmacsに標準搭載されています。
動作環境
以下の動作環境を前提にします。
- macOS Sonoma v14.2.1
-
-
MacGPG v2.2.41
- コマンドラインとして
/usr/local/MacGPG2/bin/gpg
が提供されます。 /usr/local/MacGPG2/bin/gpg
のバージョンは gpg (GnuPG/MacGPG2) 2.2.41 です。
- コマンドラインとして
-
-
GNU Emacs v28.1
利用方法
利用方法は以下の通りです。
-
find-file
などで拡張子.gpg
のファイルを作成します。- ここでは例として
example.gpg
を作成します。
- ここでは例として
- バッファを保存します。
-
どのPGP鍵で署名するか選択する以下のようなバッファが表示されます。選択後に
[OK]
をクリックします。Select recipients for encryption. If no one is selected, symmetric encryption will be performed. - ‘m’ to mark a key on the line - ‘u’ to unmark a key on the line [Cancel] [OK] - {VALUE} GPGTools Team <team@gpgtools.org> - {VALUE} GPGTools Support <support@gpgtools.org> u {VALUE} YOUR NAME <your-email-address@example.com>
- GPG Suiteのダイアログを表示するのでPGP鍵のパスフレーズを入力します。
-
作成した
example.gpg
が暗号化されているか確認します。- コマンド例:
cat example.gpg
- コマンド例:
-
作成した
example.gpg
を復号できることを確認します。- コマンド例:
gpg2 --output - --decrypt example.gpg
- コマンド例:
Org Mode - org.el
Org Mode
はEmacsが標準で提供する拡張機能です。同機能のプロジェクトサイトでは以下のように紹介しています。
Org mode は、様々な機能をサポートしています。メモを取ることから、タスクリストの管理、プロジェクトの管理、文書の編集、再現性のある計算ノート、文芸的プログラミングなどです。これらを高速で効率的なプレーンテキストシステムで実現しています。
以下のリンク先に詳細な情報が載っています。
見出し
コマンド
見出しとカーソル移動
動作 | キーバインド | 関数 |
見出しの位置を上に移す | M-up | org-metaup |
見出しの位置を下に移す | M-down | org-metadown |
見出しの位置を1階層上に移す | M-left | org-metaleft |
見出しの位置を1階層下に移す | M-right | org-metaright |
カーソルを近くにある前の見出しに移す | C-c C-p | outline-previous-visible-heading |
カーソルを同階層にある次の見出しに移す | C-c C-n | outline-next-visible-heading |
カーソルを現階層の親の見出しに移す | C-c C-u | outline-up-heading |
-
org-backward-heading-same-level (
C-c C-b
)- カーソルを同階層の前の見出しに移動します。
-
org-forward-heading-same-level (
C-c C-f
)- カーソルを同階層の次の見出しに移動します。
-
org-promote-subtree (
C-c C-<
)- 現在の見出しを子見出しも含めて1階層浅くします。
-
org-demote-subtree (
C-c C->
)- 現在の見出しを子見出しも含めて1階層深くします。
- 見出しの位置で
M-S <right>
を押した場合も同様です。
なお、筆者は以下のようにキーバインドを調整しています。
- org-backward-heading-same-level (
C-c <up>
) - org-forward-heading-same-level (
C-c <down>
)
コピー/カット/ペースト
動作 | キーバインド | 関数 |
見出しと本文を切り取る | C-c C-x C-w | org-cut-special |
見出しと本文をコピーする | C-c C-x M-w | org-copy-special |
見出しと本文を貼り付ける | C-c C-x C-y | org-paste-special |
プロパティ
https://orgmode.org/manual/Property-Syntax.html http://orgmode.org/guide/Properties.html
-
org-set-property (
C-c C-x p
)- プロパティを設定する
-
org-delete-property
- プロパティを削除する
- Property Syntax (The Org Manual)には
C-c C-c d
でプロパティを削除できると記載がある。 - 筆者の環境ではそのキーバインディグは確認できなかった。
単語はアンダースコアでつなぐ。
:LAST_REPEAT: hogehoge
ID
見出しはプロパティにIDを持てる。 M-x org-id-get-create
で作成する。
|
|
コマンド
-
org-id-get-create
- 筆者は
M-z o i
にアサインしています。
- 筆者は
タグ
-
org-set-tags-command (
C-c C-q
)- 現在の見出しにタグを設定する
下記のように予めタグのリストをorgファイルに記述にしておけば、 org-set-tags-command実行時にそのリストが表示される。
#+TAGS: laptop car pc
TODOキーワード
コマンド
-
org-todo (
C-c C-t
)- 現在の見出し(エントリー)にTODOキーワードを付与する
- このコマンドを実行するとTODOの状態が遷移する
-
org-insert-todo-heading (
S-M-RET
)- TODOキーワード付きで新しい見出し(エントリー)を追加する
-
org-todo-list
- M-x org-agenda t で呼び出し可
- TODO付きの見出し(エントリー)を一覧で表示する
ナローイング (絞り込み)
ナローイング (絞り込み) はバッファ (ファイル) の表示範囲を制御できる。 Org-Modeでは特定の見出しのみを画面に表示するといったことが可能。
振る舞い | キーバインド | 関数名 |
現在のサブツリーに絞り込み | C-x n s | org-narrow-to-subtree |
現在のブロックに絞り込み | C-x n b | org-narrow-to-block |
絞り込みを解除する | C-x n w | widen |
org-narrow-to-subtreのトグル | なし | org-toggle-narrow-to-subtre |
資料
タスクと繰り返し
https://orgmode.org/manual/Repeated-tasks.html
毎月 | +1m |
毎週 | +1w |
毎日 | +1d |
特殊な記号
++ => ??? .+ => ???
TODOをアジェンダ化 - org-agenda.el
https://orgmode.org/manual/Agenda-Views.html
M-x org-ageda
で表示します。
org-agenda-files
に登録した .org
ファイルを対象にTODOなどを表示します。
-
org-agenda-file-to-front (
C-c [
)- 現在のファイルを
org-agenda-files
に追加します。
- 現在のファイルを
-
org-remove-file (
C-c ]
)- 現在のファイルを
org-agenda-files
から除外します。
- 現在のファイルを
-
org-cycle-agenda-files (
C-'
orC-,
)org-agenda-files
のファイルを順番に移動します。
-
org-agenda-set-restriction-lock (
C-c C-x <
)org-agenda
の処理対象を現在のサブツリーに限定します。org-agenda-set-restriction-lock
実行後、該当箇所がグレー色に変わります。
-
org-agenda-remove-restriction-lock (
C-c C-x >
)org-agenda-set-restriction-lock
を解除します。
agenda view
アジェンダビューは日、週、月、年単位で表示される。 その表示単位に応じて、下記のキーでアジェンダを移動できる。
キー | 機能 |
f | 次のアジェンダを表示 |
b | 前のアジェンダを表示 |
j | 指定した日を表示 |
アジェンダビューの表示単位は下記のキーで切り替えることができる。
キー | 機能 |
v d | 日単位のアジェンダ表示に切り替え |
v w | 週単位のアジェンダ表示に切り替え |
v m | 月単位のアジェンダ表示に切り替え |
v y | 年単位のアジェンダ表示に切り替え |
ソースコード実行 - ob.el
, でエスケープできる。
#+BEGIN_EXAMPLE ,#+TAGS: laptop car pc #+END_EXAMPLE
|
|
|
|
基本操作
https://orgmode.org/manual/Key-bindings-and-Useful-Functions.html
-
org-edit-src-code (
C-c '
)- 前提条件: ソースブロック上で実行します。
- ソースブロックを別のバッファで編集します。
-
org-babel-insert-header-arg (
C-c C-v j
)- 前提条件: ソースブロック上で実行します。
- ソースブロックのヘッダー引数を指定します。
-
org-babel-execute-src-block (
C-c C-c
)- 前提条件: ソースブロック上で実行します。
- ソースブロックを評価します。
-
org-babel-next-src-block (
C-c C-v n
orC-c C-v C-n
)- 次のソースブロックに移動します。
-
org-babel-previous-src-block (
C-c C-v p
orC-c C-v C-p
)- 前のソースブロックに移動します。
C#
org-contribパッケージにあるob-csharp.elを使う。
アーカイブ - org-archive.el
コマンド
-
org-archive-subtree (
C-c C-x C-s
)- (見出しの)サブツリーをアーカイブ用ファイルに移動する。
計時 - org-clock.el
コマンド
- org-clock-report
- org-dblock-update (
C-c C-c or C-c C-x C-u
)
脚注 - org-footnote.el
脚注は英語圏で footnote
と呼ぶ。
以下にorg-modeの脚注の記載例を示す。(12.10 Creating Footnotes (The Org Manual)より引用)
The Org website[fn:1] now looks a lot better than it used to. ... [fn:55] The link is: https://orgmode.org
コマンド
-
org-footnote-new
- 新しい脚注を作成します。
-
org-footnote-goto-definition
- 指定した脚注に移動します。
-
org-footnote-action (
C-c C-x f
)- カーソルが脚注のラベルにある場合は、脚注本文へ移動します。
- カーソルに脚注のラベルがない場合は、新しい脚注を作成します。
Speed Keys
カーソルが見出しのアスタリスクにある場合に、n, pなどのキー入力でカーソルを動かすことができる。 ほかにもたくさんのショートカットキーがある。
コマンド
org-speed-commands
を使う場合は、事前に org-use-speed-commands
でフラグを立てておく。
(setq org-use-speed-commands t)
コマンドは M-x org-speed-command-help
を参照のこと。
追加
org-speed-commands
はカスタマイズできる。以下に例を示す。
(add-to-list 'org-speed-commands '("z" call-interactively #'consult-org-heading))
Sparse Tree
Sparse Tree
はorgバッファのアウトラインから該当するorgエントリーを検出し、それらを用いてアウトラインを構築する機能です。
https://orgmode.org/manual/Sparse-Trees.html
コマンド
- org-sparse-tree (
C-c /
) - org-match-sparse-tree (
C-c \
)
org-sparse-tree (C-c /
) を実行すると、どのように絞り込むかミニバッファに入力を求められます。
例えば、プロパティを検索する場合は p
を選びます。タグで絞り込む場合は m
を選びます。
絞り込んだ後にorgエントリーをトグルすると絞り込みは解除されます。
使い方
orgバッファが以下の内容と仮定します。
|
|
例1 +READING
org-match-sparse-tree (C-c \
) で +READING
と入力した場合、検索結果は以下の通りです。
|
|
例2 +READING+2015
org-match-sparse-tree (C-c \
) で +READING+2015
と入力した場合、検索結果は以下の通りです。
|
|
例3 +READING-2020
org-match-sparse-tree (C-c \
) で +READING-2020
と入力した場合、検索結果は以下の通りです。
|
|
Org QL query - org-ql.el
例えば、 TODO コージーコーナーに行く
を 買い物/誕生日
にrefileしたい場合、
org-ql-refile
コマンドでクエリ欄に todo:TODO olp:買い物 誕生日
と入力すると、
TODOステータスが TODO
で見出しのパス 買い物/誕生日
に移せる。
* Inbox ** TODO コージーコーナーに行く * 買い物 ** DONE クリスマス ** DONE 正月 ** TODO 誕生日
M-x org-ql-refile Refile to: todo:TODO olp:買い物 誕生日
ELPA: Emacs Lisp Package Archive - Package.el
コマンド
- package-list-packages
package-list-packages
で *Packages*
バッファが開く。 *Packages*
バッファ表示中は次のコマンドを利用できる。
- package-menu-quick-help (
h
) - package-menu-execute (
x
) - package-menu-delete (
d
) - package-menu-mark-unmark (
u
) - package-menu-mark-install (
i
) - package-menu-mark-install (
U
) - package-menu-mark-install (
(
) - package-menu-filter-marked (
/ m
) - package-menu-filter-by-name (
/ n
) - package-menu-filter-by-status (
/ s
) - package-menu-filter-by-archive (
/ a
) - package-menu-filter-by-keyword (
/ k
) - package-menu-filter-by-vesion (
/ v
) - package-menu-filter-upgradable (
/ u
) - package-menu-clear-filter (
/ /
)