TB-LAB BLOG

坪川研究室ブログです!適当に更新します!

tmuxの設定

どうもpruneです.
今日はtmuxについてすこしだけ・・・どちらかというとメモ.

初めに

tb-labはtexを書くときにemacsで簡単にかけるyatex環境を提供しています.
なんかこのフレーズ言うと怪しい業者みたいww
そこに一応tmuxを導入しています.
なんかちょっとだけみたら使ってるのはokkunだけのようです.
研究室の人は聞けばおしえるお

今回書きたかったこと

今回はぶっちゃけtmuxの機能の説明とかするつもりはありませんので説明すること以外はカット.
sshした時点でsessionが無かった場合tmuxが自動で起動してほしい.
②sessionが存在したらsshした時点で勝手にattachしてほしい.
emacsを使っているのでデフォルトのprefixだとC-bがemacsのカーソル移動とバッティングする.
これらの3つの欲求を満たします.そう,pruneはいまこの3つのせいでよっきゅうm(ry

tmuxってなに?

tmuxはね仮想端末管理ソフトウェアです.
tmuxを使うと便利になるんだよってことです.
tmuxの他にはGNU Screenとかが有名です.

なにができるの?

例えばsshしたときにさらにもう1つ画面ほしいとかってなったときにどうしますか?もう1回sshして画面2つにしますか?
例えばなんか作業してたときにssh切れたらどうしますか?途中の作業あきらめますか?emacsならauto-saveから復元させますか?
例えばなんか作業してたときに長いインストールが終わらなかったらどうしますか?終バスあきらめて下山しますか?

そう,こんな感じにいろいろ便利にしてくれます.
少なくともまだ機能はいっぱいあるけど,上の問題点は解決してくれるはずです.

たっち,たっち,そこにアタッチ!

tmuxにはattachという機能があります.
A君がサーバーにsshしてemacsで論文を書いてました.
その頃moominがブレーカーを間違えて下ろしてしまいました←
そしたらルータの電源が落ちてsshが切れてしまいました.
moominはブレーカーを爆笑しながら戻します←
A君はなんでだろう?と思いつつも再びsshしたら繋がったのでサーバー側で

% tmux a
もしくは
% tmux attach

を実行したところ接続が切れる前作業がそのまま復元できました.
そうつまり彼は勝ち組です.

①と②を解決しよう

ふ・・・書いてあげればいいんだよ.ってことで書きます.
まずはおなじみの.zshrcから書いてあげます.
emacsとかでホームディレクトリにある.zshrcを開いてあげて下記を追記します.

# auto run tmux
if [ -z "$TMUX" -a -z "$STY" ]; then
    if type tmux >/dev/null 2>&1; then
        if tmux has-session && tmux list-sessions | grep -qE '.*]$'; then
            tmux attach && echo "tmux attached session "
        else
            tmux new-session && echo "tmux created new session"
        fi
    fi
fi

③を解決しよう

これはtmuxの設定なので.tmux.confを記述してあげます.
なかったら自分で作成してください.
場所は.zshrc同様のホームディレクトリです. そして下記の内容を記述してあげます.これをかくとprefixがC-tになります. n

# change prefix
unbind-key C-b
set-option -g prefix C-t
bind-key C-t send-prefix

tmuxを使ってみよう

今日はこれを書きたかっただけです.
tmuxを導入すると作業効率がぐーんとあがります.
installについては調べればでてきますので各自installするといいと思います.


pruneコラム②

なんかコラムとか名前付けてますけどただ単になんかメモww
gitを使ってるときに修正をしたときにコメントにfixとか書いちゃいがち.
fixだとちょっと気が引けるのでreviseにするといいかも!
あとは微調節をしたときのコメントに困るのでtweakとか書いてます.

以上pruneでしたー.