お前はVimとEmacsから逃げられない
VimとEmacsは、プログラマーの運命を握る双璧である。それは単なるエディタの枠を超え、OSの深奥に根を張り、あらゆる環境を支配している。
UNIX、Linux、MacOS、そしてWindows――どの道を選ぼうと、彼らの影響下を逃れることは許されない。これは宿命であり、真理である。
なお、この文章の作成にはGPT-4oの力を借りています。
※nanoがエディタならcatやechoもエディタ(自論)
Bash:VimとEmacsの闘争が息づく魔窟
Bashは魔界である。その奥底にはVimモードとEmacsモードという二大勢力の抗争が渦巻いている。初期設定ではEmacsキーバインドが支配し、Ctrl+Aで行頭、Ctrl+Eで行末に移動する操作がデフォルトとして君臨している。しかし、コマンド一つでその秩序は崩壊する。
set -o vi――この呪文を唱えた瞬間、BashはVimモードへと変貌を遂げる。そこで待ち受けるのは、Vimの編集モードが清濁併せ呑む世界だ。
Bashを使う限り、ユーザーは 「Vim」か「Emacs」かの二択を迫られる。 第三の選択肢など存在しない。ここは逃げ場なき戦場である。
真理の第一方程式
(Vim | Emacs) = Bash
MacOS:Emacsが浸透する静かなる支配
MacOSは、Emacsが静かに息づく庭園である。その起源を遡ればNEXTSTEPに行き着き、そこには既にEmacsキーバインドの種が蒔かれていた。Ctrl+Aで行頭に、Ctrl+Eで行末に――Macユーザーの日常は、知らず知らずのうちにEmacsへ飲み込まれている。
だが、それだけではない。MacOSにはVimもまたプリインストールされている。ターミナルを開き、viと入力すれば、その瞬間にVimの世界が眼前に広がる。MacOSはVimとEmacsが共存しながらも緊張関係を保つ異界なのだ。
このように、MacOSを使う者は、Emacsの影響を逃れられず、Vimの存在を無視できない二重の呪縛に囚われる運命にある。
真理の第二方程式
Vim * Emacs = MacOS
Linux:Vimが覇を唱える大陸
Linuxは、Vimが闊歩する帝国である。すべてのLinuxディストリビューションはVimの存在を前提として設計されている。ターミナルを開けば、そこに待つのはvimであり、設定ファイルを編集しようとすればVimが呼び出される。
さらに、リモートサーバーにSSHで接続した場合でも、Vim以外の選択肢など存在しない。そこにあるのは、ただひとつの真実――「Vimが唯一のエディタである」 という現実だ。たとえ最小構成でLinuxをインストールしようが、そこで待つエディタはVimのただ一つである。
Linuxは、Vimの影響から逃れる余地を一切与えない。使う者すべてがその支配下に置かれる。
真理の第三方程式
Vim = Linuxディストリビューション
Windows:WSLがもたらす昇華
かつてWindowsは、VimやEmacsから逃れる避難所のように見えた。しかし、その幻想はWSL(Windows Subsystem for Linux)の登場によって打ち砕かれる。
WSLは、WindowsにLinuxの魂を吹き込む存在である。これを導入すれば、Bashが使えるようになり、VimモードかEmacsモードの選択を迫られる。そして当然ながら、vimもプリインストールされている。
ここに至り、Windowsはもはや独立した存在ではない。それはLinuxへと昇華され、Vimの支配下に組み込まれるのだ。
真理の第四方程式
Vim = Linux = WSL = Windows
結論:お前らは逃げられない
Bashは「Vim」と「Emacs」の抗争が続く魔窟であり、MacOSは「Vim」と「Emacs」が共存する異界である。LinuxはVimの覇権のもとに統治され、WindowsはWSLによってLinuxに呑み込まれた。
これらすべての事実が指し示すのは、「VimとEmacsから逃れる術は存在しない」 という冷厳な現実である。この記事を読み終えた今、あなたがすべきことは明確だ。まず、エディタとしてVimかEmacsのどちらかを選べ。そして、MacOSを使うなら、その両方から逃れられないことを心に刻んでおくが良い。
Comments
viとVimの区別がついてない人が書いた記事は読んでてモヤモヤする
vscodeはctrl-aやe、kなどそれなりにEmacsだし、コマンドパレットなんてまんまEmacsよ
vi/vimは所詮設定ファイルいじるときにふと呼ぶ程度やなあ
@fujitanozomu
この記事では、CLIエディタについて「キーバインドを主軸」に捉えています。
執筆中、Vimとviを分けて書くべき迷いましたが、「Vimを布教するのはキーバインドが優秀だから」という持論から、Vimとviの区別をつける必要はないと考えました。
さらに、エンジニアがVimを忌避する理由はその独特なキーバインドにあり、これはviも同様であるため、記事の内容によりVim、つまりVimのキーバインドからは「逃げられない」という説明をしたかった形になります。
そのため、環境に(Vim|vi)がプリインストールされているかという点で「.* = Vim」という主張をしています。
また、起動コマンドの
viについてですが、少なくとも私が使用しているDebian(6.1.0)でプリインストールされているVim(小型軽量版)を使うには、viと打ち込む必要がありました。viでVimを起動すると、vi互換モードで起動する場合もあるようですが、この記事の文脈ではviと書く方が適切と考えました。また、「viとVimの区別がついてない人」という点について、一方的な決めつけに感じられ、少々遺憾です。
記事の内容について批判される場合は、「viとVimの区別をつけていない記事」という表現にしていただけると建設的な議論がしやすくなると思います。
confファイルいじるときしかvim使わない勢なんですが、いい加減nanoエディタに慣れようと思って何度か使ってみてもどうしても慣れません。vimが染み付いてしまいました
真理の第一方程式
(Vim | Emacs) = Bash
Vim使いなのにこの真理に気づいていませんでした。これが真理だから、私はBashが好きなことに気づきました。ありがとう!
両方使っちゃ駄目ですか?
私はrootとして作業する時はVim、その他はeメールも含めてEmacsなコウモリです。
linux系はデフォルトだとvi/vim系しか使えませんがほぼすべてのディストリビューションで
emacsがパッケージで用意されていますし、デフォルトシェルもほぼbashなのでvim帝国って感じはしないですね。私は最初にsudo dnf -y install emacsした後、cat >~/.emacs <<'EOT'で.emacsの設定ファイルを流し込むまでが定型作業。viを使うのはcrontabを設定する時くらいですかね。
@Neuroiさん、
Vimはviを倣って作成された経緯があるのでviとVimのキーバインドは共通してる部分がありますが同じではないですね。
@NeuroiさんがVimのキーバインドを高く評価されてるのは自由と思いますが、Bashがマニュアルで
vi-style line editing interfaceと呼び、じっさいVimのキーバインドが再現されてるわけではないものをVimモードと言い換えるのはさすがにBashに対してもviに対してもリスペクトがないなと思いました。viとVimの区別がついている人であればこういう雑な表現はできないとも思うんですよね。
関係ないけど
いまDebianて最新が12だけどえらい古いの使ってるなあ。
Let's comment your feelings that are more than good