はじめに
こんにちは、yutanishiです。
気分転換にですます抜きのタメ口で書いてみます。
長期休みだったのでDotfilesを更新した。色々導入したのでメモがてら簡単にまとめておく。てか最初だから全部書いておく。
コードはこちら。dotfiles
全体図
README.mdにも簡単にまとめたけど、dotfilesの中身はこんな感じ。
❯ tree -aI '.git' -L 2
.
├── .bashrc
├── .config
│ ├── aerospace
│ ├── mise
│ ├── nvim
│ ├── sheldon
│ ├── starship.toml
│ ├── wezterm
│ ├── zabrze
│ └── zed
├── .gitconfig
├── .latexmkrc
├── .vimrc
├── .vscode
│ ├── keybindings.json
│ ├── settings.json
│ ├── snippets
│ └── tasks.json
├── .zshenv
├── .zshrc
├── LICENSE
├── README.md
├── flake.lock
├── flake.nix
├── link_linux.sh
├── link_mac.sh
└── nix
├── home-manager
└── nix-darwin
14 directories, 16 files
macOSの設定をしているけれど、研究室の計算機がUbuntuなのでそれ用の設定も一部入れている。OSごとにフォルダ分けはしてなくて、シンボリックリンク用のスクリプトをOSごとに用意してる。
入れたアプリまとめ
さて、上から順に入れた経緯とか感想をつらつら書いていこう。
AeroSpace
ウィンドウマネージャー。
ショートカットで画面を分割したり、移動したりするのカッコ良さそうだなーと思ってウィンドウマネージャーを探してて良さげだったから入れた。vim-jp slackで話題に上がっていて知った。多分同じくらいの機能数なのはyabai + skhdだと思うけど、これはSIPを一部無効にする必要があって気後れしたからAeroSpaceを入れた。Swift実装というのも相性は良さそう。
ただ、結局使ってない。一応27インチ4Kディスプレイ使ってるけど、三分割以上は使わねえな。。ウルトラワイドディスプレイとかなら使うかも。2分割で同様の操作がしたいならRectangleが良かった。ただ、Raycastを入れていてこれのショートカットでアプリは切り替えられるのと、標準のマウス操作でできる全画面表示の画面分割の方が(全画面と認識されるという点で)扱いやすかったので、やっぱり結局どちらも使っていない。
UIでdisable設定ができるのは良い。
mise
プログラミング環境のパッケージマネージャー。
Go、Python、Node.jsなど、主要の言語のバージョンが管理できる。どうせ言語ごとに環境作るしいらないやろと思ってたけど、動作早いし簡単に環境作れるし、設定ファイルが見やすいので良いと思う。
特にフロントエンド周りはmiseで管理するのが良いと思う。Node.jsのマネージャーは競合にVoltaとかがあるけどpnpmサポートが怪しいし(pnpmサポート | Volta)、miseだとBunもDenoもpnpmも管理できるので一元化できて楽になると思う。
Neovim
言わずもがなだけど、エディター。
LazyVimを使っている。craftsdogさんのdotfilesを参考にした。Neovimをそのまま使うことはなくて、VSCode Neovimを入れてVS Codeで使ってる。(VSCodeVimからVSCode Neovimに移行したのでメモ)
最近VSCode Neovimの調子が悪くてNeovimを生で使う機運が高まってる。(Neovim v0.10からmsgpackの挙動が大きく変わったらしく、それ起因でVS CodeでCopilot Chatとかコード以外のウィンドウに移動したらNeovimが落ちる。(issue #2165))
Sheldon
シェルプラグインマネージャー。
zshのプラグインをインストールできるのとシェル立ち上げ時のsource ~とかの処理をまとめられる。
競合にZinit、zplugとかがあるけど、メンテされてそうなのとRust実装で早くて変なことしなさそうだったので選んだ。
Starship
シェルプロンプトテーマ。
前までoh-my-zsh + powerlevel10kを使ってたけど、クロスシェル対応かつ設定楽かつおしゃれだったので入れた。これ覇権です。
WezTerm
ターミナルエミュレーター。
一応入れて設定してみたけど、結局Warpを使っている。WarpはSSH先でも同じように使えるんだもん。WezTermの良い点はOSSであることと、設定がluaで記述できること、日本語を打つときに反映されること。Vimmerが好きそうなターミナルという印象。
Warpは設定の同期ができない(issue #2561)という懸念点があるので、複数台同期したかったり、有料化したりしたらWezTermに乗り換えると思う。
Zabrze
シェルプラグイン。
zsh-abbrの代替。これ以外のzshプラグインはsheldon以下にまとめているが、これだけ.config以下に設定を記述するので一応まとめた。yamlファイルで設定できるのが良い。日本人が作ったプラグインで(作者のリリースブログ)、こういうのをぱっと作れる実装力が欲しいぜと思う。
Zed
エディター。
今後お世話になる可能性のある有力エディター。今見たらStarが47kあるので注目はされてると思う。後発の利点とAtomの経験を活かして、拡張機能モリモリ爆速軽量Vimネイティブサポートエディターになったら最強。元々Atomから来ているかもだけど、VS Codeとショートカットが同じで移行コストが低くて良い。
Nix
パッケージマネージャー。
CLIとGUIの管理をHomebrewからNixとmiseに移行した。brewに不満はなく、依存関係の衝突とか暗黙的な依存の発生とかもそんななかった気がする。なので、Nixのこういった問題を解決する設計思想(Nixを使うと何が嬉しいのか)について共感はするもののわざわざ導入するものでもないなーと思っていた。ただ、Homebrew管理下のCLIをNixに移してみるを見て、思ったより簡単に導入できるのと宣言的で管理しやすそうだと思ったから導入した。
まあ良い。今後ライブラリが増えたり、PCを新調したりするときに楽になると思う。特にmacOS固有の設定もNixで管理できるのは挑戦的で良い。
Homebrewは導入が楽だし情報も豊富なので、背伸びして他のツールに手を出しても後戻りがしやすくて良い。
その他に入れたやつ
.config以下の感想で疲れた。多い。あとは良かったやつ適当列挙する。
Plugin
- zsh-autosuggestions:履歴に基づいて、候補の表示と補完が効く
- zsh-complextions:コマンドに基づいて補完がきく
- zsh-syntax-highliting:コマンドのシンタックスハイライトが効く
CLI
- atuin:コマンド履歴検索。クロスシェル対応でめちゃいい
- bat:catのRust実装。シンタックスハイライトが効く
- delta:diffのRust実装。色がついてgit差分も表示できる
- eza:lsのRust実装。アイコン表示ができてみやすい
- tokei:コードカウント。
.gitignoreを除外してくれる - zoxide:履歴を用いたディレクトリ移動。爆速
感想
結構入れた。元々Warpでできていたシェルでの補完とかaliasの展開がプラグインを導入することでVS Codeのターミナルでもできるようになったのが一番の収穫かな。これ以外のソフトは基本的に以前のものよりも設定がしやすくなるとか早くなるとかだからそこまで感動はない。
で、導入する中で薄々気づくんだけど、入れたやつほぼRust実装です。Rustしか勝たん。エディターもパッケージマネージャーもターミナルエミュレーターもテーマもシェルプラグインもCLIも全部Rust。そもそもfishもRustで書き換えられているらしいし、I/Oが支配的じゃないかつ速さを優先するシステムプログラミングであればRust一択なのかもしれない。今からC++はあまりお勧めできないってよく言われる気がするけどnull safetyがどうこう、raw pointerがどうこうもあるけど、Rust AnalyzerとCargoが使いやすすぎるんでしょう多分。
結局、最終的な感想は「Rustしか勝たん」になっちゃった。Rust触ります。本当に。
