概要
各リポジトリをtmuxのsessionで管理しているのだが、数が多くなってきてprefix + s
で毎回上下キーで選択するのが大変(数字で選択するのも)なので、fzfで曖昧検索で選択できるようにしました。ただshellでコマンドを打つのはvimの操作中や何かのダウンロード中はできない(一手間いる)ので、tmuxのキー操作(prefix + なにか)から呼び出せるようにしました。
※追記
tmuxのプラグイン作りました!
https://github.com/hokita/tmux-session-fzf
やったこと
- tmuxのsessionをfzf(詳しくはfzf-tmux)で選択できるようにするshell scriptを作成する。
- tmuxのキーバインドにshell scriptを割り当てる。
作業
事前作業
作成したshell scriptをどこでも呼べるようにしたいので、スクリプトを置くディレクトリを作成し、パスを通しておきます。※既にあるかたは読み飛ばしてください。
# 今回はHOME配下にbinディレクトリを作成
$ mkdir ~/bin
下記をお使いのshellの設定ファイル(.bashrcもしくは.zshrcなど)に追加。
export PATH=$HOME/bin:$PATH
設定ファイルを再読込
# .zshrcの場合
$ source ~/.zshrc
shell script作成
PATHの通ったディレクトリに下記を作成する。
#!/bin/bash
if [ -n "$TMUX" ]; then
SELECTED="$(tmux list-sessions | fzf-tmux | cut -d : -f 1)"
if [ -n "$SELECTED" ]; then
tmux switch -t $SELECTED
fi
fi
実行権限を付与する。
$ chmod 755 ~/bin/tmux-session-fzf
実行できるか確認
$ tmux-session-fzf
新しいウィンドウにfzfでのsession選択画面が表示されるようになったかと思います。
ポイント
fzf-tmux
を使用しましたが、fzf
もしくはpeco
でもshellコマンド上だと動きます。が、tmuxのキーバインドからだと動作しないのでfzf-tmux
を使用しております。
tmuxのキーバインドにスクリプトを登録
※追記:tmux3.0以上ではrun
だけだとフリーズするようになったので、-b
のオプションを付与する
# 今回はprefix + y に登録。
bind y run -b tmux-session-fzf
以上です。prefix + y
でsession選択のfzf画面を呼べるかと思います。