ここ1年ぐらい*1から、ターミナル環境を良くしようという活動を頑張っている。
今使ってる環境が Windows / macOS / Manjaro Linux と、完全マルチプラットフォームな感じになっておりそれぞれで違うものをあんまり使いたくはない。 悩んでるけど結論が出ないので、ここに備忘録的にかいておこうと思う。
設定管理
Chezmoi
以前記事も書いたけど、クロスプラットフォームなうえにスクリプトも実行できるのちょっと嬉しい。
Sheldon
最近やめたので理由を書いておこうと思って。
Chezmoiにはexternalという機能があって、これで外部リポジトリのデータを管理することができるので、実はシェルプラグインの管理はほとんどChezmoiだけでできてしまうことがわかった。 ちょっと記述に手間がかかるところもあるけど、外部ツールに頼らず手順一個で解決できるならそれで十分という考えになったので、zplugとかSheldonみたいなプラグインマネージャを使わない方向で設定ファイルを書き直している。
プロンプト
oh-my-posh
poshと名前に付いているがgo製のシェルを選ばないプロンプトカスタマイズツール。競合としては Startship がある。 Starshipも含めてだけど、Windowsのターミナルも使ってる時間が長い*2身としてはWindowsも対応しているのが嬉しい。
自分が使ってる環境としては PowerShell / zsh / nushell あたりになるので、一度大きくカスタマイズしてしまったのでここから変更する理由はあんまりない。 Starshipのほうがいいのかなと思ったりしたけど、全く同じカスタマイズにはできなさそうでやってない。
ターミナルアプリ
Windows Termlnal
Windowsを使ってるならこれを使っておけ、と言い切っていいレベルの完成度の高い公式ターミナル。 ckwのメンテナ*3をやっていたり、ConEmuを使ったりといろいろ経由したが、公式がゲームエンドなやつを出してきてくれたので助かった感じがしている。
設定ファイルがJSONで拡張性が高く、タブ管理のいい感じのターミナル。 背景半透明とかいろいろあるので、設定ちょっといじるだけでかっこいい見た目にもしやすい。
この手のを使っているせいで、右クリックはメニューを出すのではなくクリップボードペーストであるべきみたいなのがあり、後述するtmuxとかの扱いに困り始めたという話もあります。
Kitty
macOSで昔はiTerm2を使ってたんですが、設定を画面でやるのが面倒になってやめた結果移行したのがKittyです。Alacrittyを選ばなかった理由はよく覚えてない。
Linuxにも対応していて、設定項目も色々あって良いなと思っていますが、タブ機能がないのが玉に瑕かなと思っています。と思ってweztermを試してみることにしました。
Wezterm
ターミナルマルチプレクサを持つ軽量寄りのターミナル。まだ今日使い始めたばかり。
Windows / macOS / Linux に対応していて隙がない。個人的にターミナルマルチプレクサにほしかったのは、画面分割より単なるタブ機能だったのでこのぐらいで十分かな。
Windowsも含めて、しばらく使ってみて検証してみます。
ターミナルマルチプレクサ
Windowsだとタブ機能あるターミナルを使ってたんですがないので迷走してました。
tmux
GitHub - tmux/tmux: tmux source code
言わずとしれた、いちばん有名なターミナルマルチプレクサ。
カスタマイズ済みの https://github.com/gpakosz/.tmux をつかってたりしたんですが、高機能すぎるなと思ってやめたりしてた。
複数のパスのウィンドウを用意しておいて tmux-continuum で毎回復元するみたいな使い方しかしてなかったので、正直機能を使いこなせてなかった感じがします。
Zellij
Weztermで微妙だなと思ったらtmuxの代わりに移行しようと思っているターミナルマルチプレクサ。
なんかnanoみたいに画面に説明とかがちゃんと出てくるんだけど、タブ機能みたいな感じで使えない雰囲気を感じてるので、ちょっと検証中。
シェル
PowerShell
別にWindows以外で使おうとは思ってないけど、Windowsならこれでいいかなというシェル。 OSS版の方を使っています。
使いこなせてはないので、移行は検討している。 あと、oh-my-posh入れた時に起動が遅い。
zsh
高機能シェルといえば、という立ち位置になってしまった。正直惰性で使っているが、これを積極的に辞める理由もないのでそのまま放置している…。
nushell
PowerShellとかのいいとこ取りをしたシェル?
まだ微妙に機能が足りないので、完全に移行はできない感じがある。まだ履歴検索してfzfで絞り込むとかができないっぽい。 でも、jqみたいな機能を持ってて今後が楽しみなので期待してインストールしてる。
ランタイムバージョン管理
asdf
anyenvとか色々乱立した結果、これが覇権にちかいのでは?ってなってるのがasdf。
まぁこれにしておけばいいんじゃないって感じではある。が、後述のrtxもあるのでどっちがいいとも言い切れなくなってきた。
rtx
asdfのRustクローンらしい。 なんでもかんでもRustにすればいいって話でもないとは思うが、shimsの挙動が変なのを直してるとか、そういうのがあるらしいので移行しても良いかなと思ってはいる。
まだ未導入。
Volta
これでゲームエンドかと思ったけど、asdf/rtxはWindowsに対応していない。
そうなると困るのはWindowsでのNodejsやPythonのバージョン管理。 ちょっと気になってNodejsについて調べてると、Voltaというのがよいらしいというのまで見つけてしまった。
asdfですらnvmとかのバージョンファイルと互換性ないのに、Voltaはpackage.jsonにバージョン指定を書くらしい。 よさげなんだけど、それならengines読んでくれないのかなとは思っている…。
まだ未導入。
結論
最初に言った通り、まだWindowsのターミナル以外は仮のエンドゲームすら迎えてないのでない。自分の備忘録ではあるが他の人の参考になれば幸い。
追記
エンドゲームっぽくなったので続編書きました
*1:だいたいchezmoi + oh-my-poshを導入したあたり
*2:例えばAI画像生成周りでもよくターミナルを使う
*3: https://github.com/ckw-mod/ckw-mod 引き継ぎたい方いれば権限渡します