ここ数ヶ月、開発環境をちまちまいじっていた。気づいたら dotfiles がかなり育っていて、「これはもう記事にしておこう」と思ったので書く。
全部を紹介するとキリがないので、特に「入れてよかった」と感じたものを8つ。
WezTerm — ターミナルを Lua で自由に組む
ターミナルは WezTerm を使っている。一番気に入っているのは、設定が全部 Lua で書けること。
自分の設定は mozumasu さんの記事 をベースにしていて、そこからモジュール分割して育てていった。appearance.lua、keymaps.lua、statusbar.lua みたいにファイルを分けて、wezterm.lua から読み込む構成にしている。
テーマは Catppuccin Mocha。GPU レンダリング(WebGpu)を有効にして 120fps で描画させている。透過度 90% + ブラーをかけると、背景がうっすら見えてちょうどいい。
Lua で書けるおかげで、こんなこともできる:
- Karabiner のプロファイルをターミナルから切り替える
- ステータスバーに好きな情報を表示する
- ペイン操作のキーマップを細かくカスタマイズする
「ターミナルの設定をプログラムで制御する」というのが驚きだった。そのおかげで気軽にカスタマイズできるし、何より楽しい
Karabiner-Elements — Cmd キーで IME を切り替える
日本語入力の切り替えに Karabiner-Elements を使っている。
やっていることはシンプルで:
- 左 Cmd(単押し) → 英語入力
- 右 Cmd(単押し) → 日本語入力
- Caps Lock → Left Control
Cmd キーを単押ししたときだけ IME が切り替わるので、Cmd+C などのショートカットはそのまま使える。Caps Lock は Control にしておくと、ターミナルやエディタでの操作がかなり楽になる。
外部キーボード(Magic Keyboard)も含めてデバイスごとにプロファイルを設定できるので、どのキーボードでも同じ体験になる。
ghq + fzf — repo コマンドで一瞬でリポジトリに飛ぶ
ghq でリポジトリを ~/ghq 以下に一元管理して、fzf で検索する。これを repo という関数にまとめている。
function repo() {
local dir=$(ghq list | fzf)
if [ -n "$dir" ]; then
cd "$(ghq root)/$dir"
fi
}
ターミナルで repo と打つと、全リポジトリが fzf で一覧表示される。インクリメンタルサーチで絞り込んで Enter を押せば、そのリポジトリに cd する。
git clone の代わりに ghq get を使うだけで、リポジトリの保存場所が自動的に統一される。「あのリポジトリどこに置いたっけ?」がなくなった。
zoxide — cd をスマートにする
zoxide は「よく行くディレクトリを覚えてくれる cd」。
z コマンドで使う。たとえば z life と打てば、過去の移動履歴から /Users/yu-home/ghq/github.com/yuuki008/life を推測して飛んでくれる。パスの一部を入力するだけでいい。
ghq + fzf はリポジトリ単位の移動に強いけど、リポジトリ内のサブディレクトリに飛びたいときは zoxide のほうが速い。この2つを組み合わせると、ディレクトリ移動でストレスを感じることがほぼなくなる。
lazygit — Git 操作を TUI でサクサク
lazygit は Git の TUI クライアント。lg というエイリアスで起動している。
ステージング、コミット、ブランチ切り替え、リベース、スタッシュ、cherry-pick… ほとんどの Git 操作がキーボードだけで完結する。差分を見ながらファイル単位・ハンク単位でステージングできるのが特に便利。
git log や git diff をターミナルで叩いて目で追うより、lazygit の画面で一覧しながら操作するほうが圧倒的に速い。コンフリクトの解消も視覚的にやれる。
Starship — プロンプトをシンプルに整える
Starship はクロスプラットフォームのシェルプロンプト。Rust 製で速い。
自分の設定はこんな感じ:
- ディレクトリ名を Nord カラー(
#88C0D0)で表示 - Git ブランチとステータスを常に表示
- コマンドの実行時間を表示
- 右側にユーザー名と時刻
starship.toml に書くだけで設定が終わるので、zsh のプロンプト設定をゴリゴリ書く必要がない。見た目がすっきりしてターミナルを開くのが少し楽しくなる。
macOS defaults — .macos スクリプトで OS 設定を再現可能にする
macOS のシステム設定を defaults write コマンドで管理している。dotfiles に .macos というスクリプトを置いて、新しい Mac をセットアップするときに一発で適用できるようにしている。
入れている設定:
- ダークモードを有効化
- キーリピートを高速化(リピート速度 2、初期遅延 15)
- スペルチェック・自動大文字化・スマートクォートを全部オフ
- Finder で隠しファイルを表示、拡張子を常に表示、リスト表示をデフォルトに
- Dock を自動で隠す(遅延なし、アニメーション高速)
特にキーリピートの高速化とスペルチェック無効化は、入れないと毎回ストレスになるやつ。手動で設定画面をポチポチするのは面倒なので、スクリプトにしておくと Mac を買い替えても安心。
direnv — ディレクトリごとに環境変数を自動で切り替える
direnv は、ディレクトリに .envrc ファイルを置いておくと、そのディレクトリに入ったときに自動で環境変数をセットしてくれるツール。
プロジェクトごとに API キーやデータベースの接続先が違うとき、いちいち export を打ったり .env を source したりしなくていい。ディレクトリを出れば自動で元に戻る。
zoxide や ghq と組み合わせると「リポジトリに飛ぶ → 環境変数が自動でセットされる → すぐ開発開始」という流れができる。地味だけど、一度使うと戻れない。
こうやって並べてみると、「移動を速くする」「繰り返しを自動化する」「設定を再現可能にする」の3つが共通するテーマだった。どれも派手な機能ではないけど、毎日使うものだからこそ、小さな改善が積み重なって大きな差になる。
dotfiles は GitHub で公開しているので、気になったものがあれば参考にしてみてください。