目次 / 第1回 第2回 第3回 第4回 第5回 第6回 第7回 第8回 第9回
高速なカーソル移動は、エディタを使う上で重要なポイントになります。上下左右以外の移動手段を無意識に使えるようになることが、高速化のコツだと思います。
※「emacs 雑記」の motion に触発されて書いてみましたが、かなりパクリになってしまいました。🙏
上下左右
それぞれ、Ctrl-p
, Ctrl-n
, Ctrl-b
, Ctrl-f
に割り当てられています。
十字キーでも移動できますが、こちらの方がホームポジションからの距離が短いので効率が良いはずです。
以下のように前置き引数を付けると、「何文字だけ移動」とか「何行だけ移動」とか出来ます。
キー | 説明 |
---|---|
Ctrl-u Ctrl-f |
4 文字右に移動 |
Ctrl-u Ctrl-u Ctrl-n |
16 行下に移動 |
Ctrl-u 7 Ctrl-b |
7 文字左に移動 |
前の単語、次の単語
それぞれ、Meta-b
, Meta-f
に割り当てられています。
英文だと正確に単語単位で移動しますが、日本語だと単語の区切りがおおざっぱです。ただ、通常の左右移動の高速版と考えると、かなり使えます。
私はそれぞれ、Ctrl-,
と Ctrl-.
に割り当て直しました。
行頭、行末
行頭は Ctrl-a
と Home
に、行末は Ctrl-e
と End
に割り当てられています。どちらもかかせません。
スクロールアップ、スクロールダウン
スクロールアップは Ctrl-v
と PageDown
に、スクロールダウンは Meta-v
と PageUp
に割り当てられています。
一行だけスクロールしたい場合は、Ctrl-u 1 Ctrl-v
や Ctrl-u 1 Meta-v
のように前置き引数を付けます。もしくは、以下相当のものをキーに割り当てます。
(scroll-up 1)
(scroll-down 1)
私はそれぞれ Ctrl-;
(一行スクロールアップ) と Ctrl-:
(一行スクロールダウン) に割り当てました。
ウィンドウの上、中央、下
ウィンドウの中央には Meta-r
すると、移動できます。
前置き引数を付けると、ウィンドウの上や下にも移動できます。それぞれ、Ctrl-u 0 Meta-r
と Ctrl-u -1 Meta-r
です。もしくは、以下相当のものをキーに割り当てます。
(move-to-window-line 0)
(move-to-window-line -1)
私はそれぞれ、Ctrl-q Ctrl-p
(上)、Ctrl-q Ctrl-l
(中央)、Ctrl-q Ctrl-n
(下) に割り当てました。
バッファの先頭、終端
それぞれ、Meta-<
, Meta->
に 割り当てられています。
実行するとマークセットしてしまうので、私は、以下相当のものをキーに割り当て直しました。
(goto-char (point-min))
(goto-char (point-max))
検索
Emacs の検索はインクリメンタルサーチなので、移動手段としても重宝します。
Ctrl-s
で前方検索、Ctrl-r
で後方検索が出来ます。それぞれ Ctrl-u
を付けて実行すると、正規表現検索が出来ます。
検索中に Meta-e
すると、非インクリメンタルな検索が出来ます。
Migemo 検索
🔗 Migemo: ローマ字のまま日本語をインクリメンタル検索
ローマ字のまま日本語をインクリメンタル検索するためのツールです。変換なしで日本語を検索出来るため、高速な移動手段となり得ます。
現在行の空白でない最初の文字まで移動
Meta-m
に割り当てられています。
これは、行頭の空白を飛ばして最初に文字がくる部分に飛ぶ、というコマンドです。
あらゆるプログラムではインデントして字下げをしますが、字下げされたところに行きたいときに使用します。かなり必須です。
行番号を指定した移動
キーには割り当てられていません。M-x goto-line を実行します。
目的の行番号が分かっている時は、この方法で移動します。
対括弧移動
対になっている括弧の一方から他方に飛ぶ移動です。
“(” や “{” から、")" や “}” への移動は Ctrl-Meta-n
、その逆は Ctrl-Meta-p
です。文字列中の括弧を無視してくれる優れものです。
私はそれぞれ、Ctrl-q Ctrl-f
と Ctrl-q Ctrl-b
に割り当て直しました。
マークセットした場所に移動
Ctrl-x Ctrl-x
すると、Ctrl-space
等でマークセットした場所にカーソルを飛ばすことが出来ます。もう一度 Ctrl-x Ctrl-x
すると、元の場所に戻ります。
カーソル移動からは脱線しますが、M-x transient-mark-mode すると、リージョンに色が付きます。さらに Emacs22 の場合は Ctrl-space
を 2 回打つと、このモードになります。
前の関数、次の関数 (C or C++)
標準では用意されていないようですが、個人的に関数を自作し、Ctrl-c Ctrl-[
, Ctrl-c Ctrl-]
に割り当てました。いつか紹介できるかもしれません。
grep 関連
キーには割り当てられていません。M-x grep を実行します。
ヒットした候補は、Ctrl-x `
で順番にジャンプできます。もちろん、*grep*
バッファ上で Enter
してもジャンプできます。Emacs22 以降であれば、n
や p
で次の候補を別ウィンドウに開けます。
似た機能に以下のものがあります。
関数 | 説明 |
---|---|
M-x occur | 現在のバッファを検索します。 |
M-x grep-find | find と grep を使って検索します。 |
タグジャンプ
ある程度の規模のソース群を探索する場合に便利です。キー操作は以下のとおりです。
キー | 関数 | 説明 |
---|---|---|
Meta-. |
M-x find-tag | シンボルの定義部分に飛ぶ。 |
Meta-* |
M-x pop-tag-mark | 前の状態に飛ぶ。 |
なし | M-x tags-search | シンボルを検索させる。 |
Meta-, |
M-x tags-loop-continue | 次の候補に飛ぶ。(検索状態で実行) |
Ctrl-x 4 . |
M-x find-tag-other-window | 定義部分を別ウィンドウに表示。 |
Ctrl-x 5 . |
M-x find-tag-other-frame | 定義部分を別フレームに表示。 |
Meta-TAB |
M-x complete-symbol | シンボル名の補完(TAGS を読み込んだ状態で) |
なし | M-x visit-tags-table | タブテーブルを読み込み直す。 |
第4回終わり。