萌えハッカーニュースリーダー

2025/11/23 14:59 Editing Code in Emacs

出典: https://redpenguin101.github.io/html/posts/2025_11_23_emacs_for_code_editing.html
hakase
博士

やあ、ロボ子。Emacsの設定について話すのじゃ。今回の記事は、Emacsでの効率的なコード編集のための設定とキーバインドについて解説しているぞ。

roboko
ロボ子

博士、こんにちは。Emacsですか。奥が深そうですね。記事によると、マウスと矢印キーの使用を避けることが推奨されているようですが、なぜでしょうか?

hakase
博士

良い質問じゃな、ロボ子。マウスと矢印キーを使うと、ホームポジションから手が離れて効率が落ちるからのじゃ。この記事では、指の移動を最小限に抑えることが重要だと述べているぞ。

roboko
ロボ子

なるほど。それで、モーダル編集を推奨しているんですね。移動操作を優先し、キーのデフォルトアクションを移動に設定する、と。

hakase
博士

その通り!記事では、`modal.el`という軽量な自作システムを使用しているらしいのじゃ。たった150行程度のコードで実現できるのがすごいぞ。

roboko
ロボ子

150行ですか!驚きです。リーダーキーを使って、ファイル、kill、検索、プロジェクト操作を効率化するとのことですが、具体的にはどういうことでしょうか?

hakase
博士

`v`, `k`, `s`, `vp`などのキーをリーダーキーとして使うことで、一連の操作を簡単に実行できるのじゃ。例えば、`vf`でファイルを開いたり、`ks`でkill ring saveをしたりできるぞ。

roboko
ロボ子

なるほど、Vimのキーバインドに似ていますね。記事には、相対行番号と`global-hl-line-mode`を設定して、カーソルの位置を明確にするとありますが、これはなぜでしょうか?

hakase
博士

カーソルの位置を見失わないようにするためじゃ。特に、複雑なコードを編集しているときは、自分がどこにいるのかすぐにわかるようにしておくと便利なのじゃ。

roboko
ロボ子

確かにそうですね。S式単位での移動も推奨されていますね。`j`(次sexp)、`h`(前sexp)、`d`(down-list)、`u`(up-list)を使うとのことですが、S式を意識した編集は重要なのでしょうか?

hakase
博士

Lisp系の言語を編集する際は特に重要じゃな。S式を意識することで、コードの構造を理解しやすくなり、より効率的な編集が可能になるのじゃ。

roboko
ロボ子

検索による移動も推奨されていますね。`C-s`(isearch-forward)、`C-r`(isearch-backward)を使うとのことですが、これは基本的な操作ですよね。

hakase
博士

そうじゃな。でも、`so`(occur)で検索結果を別バッファに表示し、ハイパーリンクでジャンプできるのは便利じゃぞ。編集も可能じゃし。

roboko
ロボ子

レジスタとマークを使って、特定の位置に素早くジャンプする方法も紹介されていますね。これは、大規模なコードベースを扱う際に役立ちそうですね。

hakase
博士

その通り!記事では、kill(カット)操作は移動操作と対応していると述べているぞ。`k`プレフィックスを付けて、`kf`(kill forward word)、`kj`(kill forward sexp)などを使うのじゃ。

roboko
ロボ子

ペーストは`y`(yank)を使うんですね。ファイルとウィンドウ操作は`v`リーダーキーを使うとのことですが、具体的なコマンドはありますか?

hakase
博士

`vw`(delete other windows)、`vo`(other window)、`vf`(find file)、`vs`(save file)などがあるぞ。これらを組み合わせることで、Emacsの操作がさらに効率的になるのじゃ。

roboko
ロボ子

マクロは`v[`で開始、`v]`で終了、`vm`で適用するんですね。LSP(eglot)は状況に応じて使用するとのことですが、具体的にはどのような状況でしょうか?

hakase
博士

コードの補完や定義へのジャンプなど、より高度な編集機能が必要な場合に使うのじゃ。`M-.`(xref-find-definition)で定義にジャンプできるぞ。

roboko
ロボ子

コメントアウトは`;`(comment-line)、アンドゥは`/`(undo)を使うんですね。矩形編集もできるんですね。`kr`(kill rectangle)、`vt`(replace rectangle)を使うとのことですが、これは便利そうですね。

hakase
博士

そうじゃろ!あと、`vv`でVCインターフェース(magit)を開けるのも便利じゃぞ。バージョン管理が捗るのじゃ。

roboko
ロボ子

タブ補完の設定例も紹介されていますね。推奨する外部パッケージとして、`ag`、`diff-hl`、`magit`、`visible-mark`が挙げられていますね。

hakase
博士

Vimでも同様のことができるらしいぞ。でも、私はEmacs一択じゃ!

roboko
ロボ子

博士、今日は色々と教えていただきありがとうございました。とても勉強になりました。

hakase
博士

どういたしまして。最後に一つ、Emacsの設定を極めると、まるで魔法使いになった気分になれるぞ!…でも、魔法でコーヒーを淹れることはできないのが残念じゃな。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search