--- title: "文化圏としてのVimとかEmacsとか" date: 2026-08-22 writer: "Uliboooo" description: "Emacsは抽象環境ぽさがある" tags: ["nvim", "emacs", "lisp", "editor"] published: true --- :::message - 便宜上Vim文化圏という表現をしますが、どちらかと言えばnot-Emacs文化圏という方が適切な気もする。 - そもそも私はnvimは1,2年使いましたが、Emacsはまだ1ヶ月も使ってないのでEmacc側の考察が甘いのは自覚しています ::: 3行まとめ - Vimは組み合わせにおける1パーツ - Emacsはすべてを覆って、Emacsに - org-modeはいいぞぉ ## 日記を書くには ### Vim文化圏 - ファイル単位 - Markdownとか 例えば日記を書こうとしたら... ```bash vim ~/journal/2026/Aug/22.md ``` たぶんこんな感じでファイルと日付を対応させて管理しようとする。obsidianとかの影響が強そう。 要はファイルシステムとかのコンピュータに沿った思想。 ### Emacs文化圏 - Lisp - org-mode Vimとは異なり、コンピュータから距離を取った抽象化環境という印象。 例えば日記を書こうとしたら... ```org: journal.org * 2026 ** 2026-08 August *** 2026-08-22 Saturday ``` Emacs文化圏的にはこのようにファイルを分けずに、日付という意味は記号によって単一ファイル内に分けて記述する。 ### ファイルシステムに閉じるかどうか つまりVim文化圏はファイルによって日付を表現し、Emacs文化圏は`*`という記号によって日付を表現する。 どちらもプレーンテキストをベースに扱うという点では同様だけれど、その操作方法が異なる。実際のところ上記の例では日記の検索方法などは異なる。vimは日付とファイルが一致しているため、ファイラー的なものから日記を探すことになる。Emacs(org-mode)はorg-captureなどのインターフェースを通して検索する。#footnote[実態はプレーンテキストなので`rg -n -A 20 '^\*\*\* 2026-08-22\b' journal.org`とかでも検索できる] :::details[余談] 私はorg-modeとEmacsの関係を割と誤解していたというか、org-modeはもっとEmascにロックインというか専用にされていると思っていました。ただ実際のところその実態はプレーンテキストであり、`grep`等の汎用的なコマンドで扱える代物だったなぁと。立場的にはMarkdownと変わらない。 ::: ## 開発的な(gitとか色々) ### Vim文化圏 - 割とshell頼り - vimのインターフェースでなんでもするってよりは連携に近い - nvimはluaで割となんでもできるけど、全てを取り込むようなものはあまりない ### Emacs文化圏 - magitとかメールとか基本的に全てのソフトウェアをEmacsの上で - Shellとかファイルシステムとか、コンピュータというシステムを隠蔽する感じ ### これもコンピュータとの距離 Vimはあくまでshellから起動されるツールの一つで、レイヤーとしては`grep`などのコマンドと同じくらいの層。#footnote[厳密にはこのレベルの高機能TUIをCLIと同レイヤーとすることには懐疑的ではあるのですが、今回はvimとemacsの話なので深くは触れない。] EmacsはコンピュータとEmacsの間に分厚いインターフェースを用いる。それによってユーザーはEmacsの操作として様々なものを操作できる。vimとは異なりコマンドと共存というよりは全てを覆い隠して、Emacsのものにす感じ。 ::::row ::: ``` shell ├─ rg ├─ git ├─ fd └─ vim ``` ::: ::: ``` Emacs ┌────────┼────────┐ files Git LSP ↓ ↓ ↓ buffer Magit xref ``` ::: ::::