概要
- tmux を活用したリモート開発環境の構築と、その驚きの操作フローを紹介
- VSCode やZedへの不満から独自のワークフローを追求した経緯
- tmux の設定や独自スクリプトによるファイル検索・編集の自動化
- 他人にはおすすめしにくいが、 生産性と快適さ は大幅向上
- 代替案や学び、ターミナルの本質的な強さについても解説
tmuxによるリモート開発ワークフローの全体像
- Windows Terminal を開き、 Ctrl + Shift + 5 で新しいタブを開く操作
- 新タブで自宅デスクトップに SSH接続 し、即座に tmux を起動
- tmux 上でデフォルトシェルの zsh を起動
- zsh プロンプト表示後、設定を非同期で読み込みつつ zoxide で最近使ったディレクトリをファジー検索
- ripgrep コマンドを入力、 zsh のオートフィル機能で過去のコマンドを自動補完し Ctrl + f で確定
- Ctrl + k f でtmuxのスクロールバック全体からファイル名を検索
- ファイル名が青色でハイライトされ、 n キーで次々と選択
- 目的のファイルを見つけたら o キーでデフォルトアプリ(この場合はnvim)で開く
- tmux が新しいペインでnvimを起動し、リモート上でファイル編集
- rust-analyzer で参照ジャンプを試みるが、一部マクロに対応できず失敗
- 成功した箇所で参照先にジャンプ
- Ctrl + k h でtmuxのペインフォーカスを左側に戻す
- 再び n で次のファイルを選択、 o で同じnvimインスタンス内で別ファイルを開く
- b キーで開いているバッファ一覧を表示し、ファイル間を素早く切り替え
なぜこのワークフローを作ったのか
- VSCode の遅延やvimプラグインとのキーバインド競合に不満
- Zed も未成熟かつキーバインド競合が多かった
- ターミナル上の nvim 運用ではファイル名のコピペや整形が煩雑
- VSCodeのCtrl+クリック のように、任意のパスを即座に開きたいニーズ
- tmux を活用し、理想のワークフローを自作した経緯
tmuxの設定・スクリプト解説
- スクロールバックからファイル名検索
- 複雑な正規表現をtmuxのbind-keyで実現
- 検索ロジックは search-regex.sh で管理
- 選択ファイルを新しいペインでnvim起動
- デフォルトアプリで開く場合は copy-pipe でパスをbash経由で展開しopen
- 現ペインでエディタ起動も可能(ファイル種別によるアプリ選択)
- nvim実行中のペインにファイルを送る
- Perlスクリプトで tmux からnvimにコマンド送信
- 既存nvimインスタンスへのファイル追加やペイン選択も自動化
この仕組みのメリットと注意点
- ローカルには 高機能ターミナル不要、フォントが綺麗なら十分
- tmux 経由の操作なので、Windows環境でも追加インストール不要
- エディタがリモートスクリプト非対応でも運用可能(nvim/helix/kakoune等)
- エディタ組み込みターミナルに依存せず、 柔軟性と拡張性 を確保
- セッション永続化 が最大のメリットだったが、今後は kitty への移行も検討中
- kittyはssh連携がシェル統合型で、リモートにインストール不要
- weztermはサーバープロセス必須で、デフォルトで入っていない
使ってみてどうだったか
- エディタのラグやキーバインド問題 から解放され、快適な編集環境を実現
- デバッグも容易、vimプラグインのluaにprintを挿入するだけで挙動確認
- エディタ・ターミナル間のスクリプト連携 が簡単
- ただし、 他人にはおすすめしにくい
- スクリプトが壊れやすく、自己管理できる人向け
- デバッグや運用の知識が求められる
似たことをやりたい人向けの代替案
- fish + zoxide + fzf :ディレクトリ移動やファイル検索の効率化
- エディタ標準の ファジーファインドや全文検索、タブ・ウィンドウ管理
- qf :ターミナル出力からファイル選択(ただしvi系CLI前提、カスタム要)
- e :file:line構文変換ツール(同名自作ツールと偶然被ったエピソードも)
- vim --remote filename, code filename, emacsclient filename :既存エディタのリモートファイルオープン
- file:line未対応やエディタ切替時の手間が課題
学びとまとめ
- ターミナルは想像以上に強力、スクリプト化次第で多彩な機能を実現可能
- エディタに縛られず、 自由なワークフロー構築 が可能
- 既存ツールでもある程度再現できるが、 本質的な柔軟性はターミナルスクリプトに軍配
- 他の人のツール構成や工夫にも興味あり、情報交換歓迎