emacs の補完フレームワーク vertico に移行した
ここ数年 emacs 環境を更新していなかったので化石状態だったが、 少しだけパッケージの入れ替えをしてみた。
それが vertico。
vertico は 2021 年辺りに登場したらしいので、 既に 4 年経過していてイマサラ感が半端ないが、 一応説明しておくと vertico は補完フレームワークだ。
emacs の補完フレームワークといえば anything, helm と使ってきたが、 その次世代が vertico になるらしい。
大きな特徴としては、補完候補表示にミニバッファを活用し、動作も軽快ということらしい。
4 年も経過しているので、 この辺りはネットを検索すればいろいろと出てくるので各自しらべてもらうとして、 今回は設定とカスタマイズについて紹介する。
なお、設定、カスタマイズ共に Gemini だけでほぼ解決した。
設定
vertico, orderless, marginalia, consult を設定。 これでほぼ helm の基本は代替可能。
|
|
カスタマイズ
折り返し表示
Vertico で困ったのは、 長い文字列を表示する時に折り返す方法がないこと。 もしかしたらあるのかもしれないけど発見出来ず。
なので、ここでは Vertico をカスタマイズして一番上の行に、 カーソル位置の候補文字列を折り返して表示することにした。
|
|
consult-recentf のカスタマイズ
上述した通り、長いパスは使い勝手が悪い。 上記のカスタマイズで、折り返し表示できるようにはしたが、一覧性は改善されない。
そこで、ここでは次のように変更して一覧性を改善する。
- 長いパスは、大抵は特定のパスで始まっている
- そして、その特定のパス自体が長い
- つまり、特定のパス自体を別の文字列に置き換えてやればかなり短縮できる
- 理想はパスの共通性を自動で検出してそこを置き換えるようにできれば良いが、 それは結構面倒だし、期待した結果にならないとそれはそれでストレスになる
- そこでここでは、長いパスの共通部と、それを置き換えて表示する文字列のペアを 事前に設定できるようにする
- consult-recentf そのものをカスタマイズすのではなく、 新しく自分用の consult-recentf を作成する
ということで、それが以下。
|
|
まとめ
今回は helm から vertico に移行してみたが、 動作は確かに軽量になって満足。
また、設定、カスタマイズも Gemini でほぼ解決し、導入に苦戦することはほとんどなかった。 ただ、ローカルの機能で helm を使っているモノも一部あるので、 それは今後随時置き換えていく予定だ。
話は変わるが、今回移行作業していて思ったことがある。 それは、「この AI 時代、 emacs は再評価されるのではないか?」ということ。
AI 向けのエディタといえば Cursor とか、 あるいは OSS のデファクトスタンダードを確立している vscode が良く使われているが、 カスタマイズ性という意味では emacs が優れているだろう。
ただ、カスタマイズ性が優れていても、 emacs のカスタマイズ自体のハードルが高く、 その魅力が上手く伝わっていなかったように感じる。
しかし、今は AI を使うことで最低限の知識だけで、 誰でも簡単にカスタマイズが可能になっている。
これによって、emacs が再評価される可能性があるのではないか?
とはいえ、 AI 時代に自分専用のエディタを作る必要がどこまであるのか?疑問もある。
AI とチャットさえ出来れば良く、高度な編集機能は不要、という話しもあるだろう。
また、emacs はカスタマイズ可能とはいえ、 「CUI 主体から GUI を主体に変えたい」というような要望は流石に困難だ。
emacs が今後シェアを延すのは難しいかもしれない。