ShellScript
tmux
zshrc
fzf

tmuxの操作を選択的UIでインタラクティブにする

今回作ったのは、tmuximumというシェルのコマンドです。

ZIFU3.gif

8/24 挙動にはほとんど変わりはないと思いますが,コードを大幅修正しました

使い方

tmuximumは、tmuxのコマンドによる一連の面倒な操作を簡略化するために作られました。

例えばtmuxのセッションにアタッチするのに、普通は

$ tmux list-sessions
2: 1 windows (created Thu Jul 14 22:55:13 2016) [123x48]
4: 1 windows (created Thu Jul 14 23:19:11 2016) [80x24]
5: 1 windows (created Thu Jul 14 23:19:32 2016) [80x24]
$ tmux a -t 4

と、セッションのリストを表示させてそこから目当てのセッションを選びアタッチするような作業をしなければいけませんが、tmuximumなら

$  tmuximum

ZIFU3.gif

と、コマンド一発で選択的インターフェイス(この場合はfzf)を使い目的のセッションにアタッチできます。

具体的に機能を説明していきます。
このコマンドは、tmuxの内外で挙動が変わります。

tmux外

tmuxの外にいるときにtmuximumでできることは

  • 既存のセッションにアタッチ
  • 新しいセッションを作る
  • 既存のセッションを終了する

です。
このうち上二つは先ほどのgifでわかると思いますが、セッションの終了はこんな感じです↓

ZIFU4.gif

上のgifでは既存のセッションを二つ終了しています。
全部上下十字キーとEnterのみでできるので非常にストレスなく操作できます。

tmux内

tmuxの中にいるときにtmuximumでできることは

  • ウィンドウの移動
  • セッションの終了
  • ウィンドウの終了

です。

tmuximum_4.gif

使用例

まず、tmuximumってコマンドが長いくて打ちにくいので(tmuxの2倍も打たなきゃいけない) ~/.zshrcとかに

.zshrc
alias t="tmuximum"

ってしとくといいと思います。頻繁に使うので一文字で。

一番オススメなのは、シェルの起動時に自動でtmuximumを実行させることです。
今までもシェルの起動時に「セッションがなかったらtmux new-session、あったらtmux attach」みたいな設定を書いてた人は多いと思うんですけど、tmuximumを使うことによってより快適になります。

.zshrc
if [ -z $TMUX ]; then
  tmuximum
fi

インストール

2018/4/5追記
antigenでは

antigen bundle arks22/tmuximum

zplugやantigenなどのパッケージマネージャを使っている場合は
zplugを使っている方は、

$ curl -L raw.github.com/arks22/tmuximum/master/install.bash | bash 

とすることでインストールできます。
---以上追記---

zplugを使っている方は、

~/.zshrc
zplug "arks22/tmuximum", as:command

としてくれれば動きます、zplug最高

そういえば、fzfがないと動きません。すいません、いつかpecoとかにも対応します

fzf,fzf-tmux,peco,percol,gofに対応しました。(2018/4/5追記)

zshでしか動作確認していないので、bashとかfishだとどうなるかわかりません。不具合があったらここのコメントでもいいので報告してください。すぐ直すと思います。