世界を動かす技術を、日本語で。

Emacsにさらに多くのバッテリーが含まれています

2026年6月15日原文(karthinks.com)

概要

  • Emacs には多くの便利な機能があるが、発見しづらい点が課題
  • 本記事は Emacs標準搭載の隠れた機能 を紹介
  • パッケージ不要、学習コストが低い機能のみ厳選
  • 中級者〜上級者向け、基本操作を理解した後に読むことを推奨
  • 実践的な利用方法や コマンド例 も解説

Emacsの隠れた標準機能紹介(第3回)

  • dictionary-tooltip-mode

    • 単語の上にカーソルを置くと、その意味がツールチップで表示されるモード
    • tooltip-mode が有効ならデフォルトで動作
    • ローカル辞書 がある場合はそちらを優先利用
    • Wiktionary 等の現代用語にも対応
    • 単語の意味を素早く確認できる利便性
  • find-file/diredでのワイルドカード利用

    • find-file(C-x C-f) でワイルドカード指定可能
    • 例:*foo*.txtで複数ファイルの同時オープン
    • Dired で特定ファイルのみのリスト表示もワイルドカードで実現
    • サブディレクトリ内の特定パターンのファイル一括操作に便利
  • ffap-menu(find-file-at-pointの拡張)

    • バッファ内のファイルパスやURLを自動検出し、一覧から選択・操作可能
    • completing-readインターフェース で複数候補を一括処理
    • Embark 等との連携で更なる活用が可能
  • プロパティ付きリンクの一覧取得(自作コマンド例)

    • EWW等でテキストプロパティとして埋め込まれたURLも抽出
    • カスタム関数でバッファ内全URLをリストアップし、選択・ブラウズ可能
  • compare-windows(ウィンドウ比較)

    • 2つのウィンドウのカーソル位置からテキストを比較
    • 最初の差分箇所でカーソルが停止し、内容を即座に確認
    • バッファ種別やファイル属性を問わず 比較可能
    • ディレクトリ内容の比較 にも応用可
    • プレフィックス引数で空白無視も対応
  • dired-compare-directories(ディレクトリ比較)

    • Diredで2つのディレクトリ内容を比較し、異なるファイル名を自動マーキング
    • ファイル属性(更新日時やサイズ) によるカスタム比較も可能
    • エディフ系コマンド(ediff-directories等)も用途別に用意
  • highlight-changes-mode(変更箇所のハイライト)

    • バッファ内の編集内容をリアルタイムで色分け表示
    • 保存時にハイライトをリセットし、未保存部分を強調
    • after-save-hook/before-save-hook との連携で自動ON/OFF
    • テキストモード全般での変更追跡に有用

Emacs用語・操作の現代的解釈

  • M-x :Alt + xでコマンド実行
  • C-x :Ctrl + x
  • Frame :Emacsウィンドウ全体
  • Window :分割ペイン
  • Buffer :テキストやデータのまとまり
  • Point :バッファ内のカーソル位置
  • Active Region/Region :選択範囲(ハイライトされない場合も含む)
  • Face :フォント、色などの表示プロパティ

おすすめの活用シーン

  • 複数ファイルの一括編集や管理
    • ワイルドカード指定やDired機能の活用
  • ドキュメントやコードの差分確認
    • compare-windowsやhighlight-changes-modeの即時比較
  • URLやファイルパスの一括抽出・操作
    • ffap-menuやカスタムコマンドによる効率化
  • ディレクトリ構造やファイル属性の比較
    • dired-compare-directoriesでの詳細な差分抽出

注意事項・対象読者

  • Emacs初心者向けではない
    • 基本操作や主要パッケージに慣れてからの利用推奨
  • パッケージ追加不要、標準機能のみ
    • 学習コストを抑え、すぐに試せる内容
  • Emacs 28.1以降の環境を想定
    • 古いバージョンでは一部機能非対応の場合あり

Emacsの標準機能には、まだまだ知られていない便利なツールが多数存在します。今回の紹介を参考に、日々の作業効率化や新たな発見につなげてください。

Hackerたちの意見

1994年からEmacsを使ってるけど(Lucid!)、Diredはまだよく分からない。

試してみて!独自の学習曲線があるけど、急いでる時には便利だよ。

sunrise-commanderをチェックしてみて!Diredのデュアルペイン版みたいなもので、強力な統合ファイルマネージャーがあるのがめっちゃ便利だよ。

面白い事実なんだけど、DIREDはEMACSよりも前に登場したんだ。ITSのDIREDも今のDIREDにかなり似てるよ。

正直、DiredのUXはキー操作を覚えないといけないから、ちょっとフラストレーションが溜まる。だから、Transientメニューとコンテキストメニューを作っちゃった。これらはMELPAのCasualとAnjuパッケージで入手できるよ。興味があったら、以下のリンクで詳しく読んでみてね: https://kickingvegas.github.io/casual/Dired-Usage.html https://kickingvegas.github.io/anju/Dired-Mode-Context-Menu....

使ってない機能が山ほどあるけど、C-qでファイル名を編集できる機能とか、本当に便利な機能もあるよ(変更が終わったらC-x-sで保存ね)。複数のファイルをリネームする時に、矩形編集があるとすごく助かるんだ。

一度orgmodeを見たことがあって、すごく気に入った。Doomやspacemacsも使ったけど、アップデートで全部壊れて修正が必要になるのが辛い。仕事を進めたい時にEmacsを直すのは無理だと思って諦めちゃった。

これはEmacsの問題というより、「やりすぎるEmacsプラグインが多すぎる/コントロールを取りすぎる問題」だと思うようになった。僕はバニラEmacsを使ってる(use-packageも使ってない)けど、設定はもう壊れないし、メジャーなEmacsのバージョンをアップグレードしても大丈夫。Emacsのやり方に調和して物事を進めることが大事で、UI/UXを支配しようとするのはダメだと思う。Emacs Liveは、使ってた時はいつも壊れてた。

どの「アップデート」を指してるの?Emacsを15年以上使ってるけど、何か壊れて仕事ができなくなったことは一度もないよ。

バニラEmacsを使ってて、マスターからソースをそのままコンパイルしてる。やる気になったときのコミットでね。唯一、ターミナルでgit logみたいなコマンドを実行したときに、出力が一度に全部出ちゃったことがあったけど、それ以外は特に問題なかったよ。安定版を使ってる人は、そんなに問題に遭遇しないと思う。

僕の意見(誰かを不快にさせたくないし、もちろんEmacsコミュニティは素晴らしい)。2010年頃からフルタイムでEmacsを使ってるけど、2024年頃からはVSCodeと並行して使ってるから、実質的にはパートタイムになってる。 > 「これは主に発見性の問題です」 僕の経験では、全然発見性の問題じゃないよ。少しもね。Emacsのバッテリーに関する問題は、パッケージの組み合わせによる安定性なんだ。Diredの使い方も、elispパッケージのインストール方法も、自分でEmacs Lispを書くことも知ってる。Emacsの問題は、「バッテリー」を持つ大きなパッケージを作るのが難しいこと。追加したパッケージが、無関係に見える別のパッケージを壊すことがあるから。例えば、昔(2020年頃かな?)Spacemacsをvimのキーバインディングなしで使ってたけど、バッテリーが含まれてて嬉しかったのに、上で言った問題はもっと大きかった。パッケージをインストールして、無関係なLSPやプログラミング、オートコンプリートのパッケージが壊れるのに常に対処しなきゃいけなかったから、かなりイライラしたよ。LLMの狂騒が始まってからは、Emacsに関連するLLMのものは全然インストールしてなくて、LLM関連の作業には他のテキストエディタを使って、Emacsは他のことに使ってる(特に強力なEmacsパッケージがあれば、例えばagda2-modeはすごく良い、ほぼ完璧!)。また、僕の謙虚な意見だけど、Emacsは素晴らしいし、いろんな面でまだ僕のメインだと思う。ただ、僕にとって一番の問題はランダムに壊れるパッケージだと思う。もしかしたら僕がひどいelispプログラマーなのかもしれないけど、それもあり得る!でも、何十年も毎日Emacsを使ってるから、よく分からないな…。

あなたとバズワードで共通の兄弟は同じ文脈にいるね。二人とも誰かの設定フレームワークを使っていて、これはバニラEmacsのやり方とはかなり違うんだ。ほとんどのパッケージは何か標準的なものを前提にしてるから、設定がそれに合ってないと何かが壊れることを覚悟しなきゃいけないよ。

Hacker Newsで議論の続きを見る