ぼくのかんがえた(各種ネットから設定を拝借した)さいきょうの.tmux.conf

最終更新日

Comments: 0

はじめに

えんじにあなので今まで色々なターミナルソフトを渡り歩きました。
その度に細かいソフト固有の使い方を覚えるのがめんどくさいなと思って生きてきました。

tmuxは元々はログインしたサーバから接続が切れても良いようにという目的で使い始めました。使用してみるとターミナルソフト側でやってたことが(ターミナル内の文字列検索、画面分割機能など)tmux上でもできてかなり便利なことを実感したのでサーバ関係なくローカルでの作業時もtmux上で作業するようになりました。
そこから1年ちょっと使い「ターミナルソフトは反応が遅く無くてある程度安定していたらまぁなんでもいいかな」程度にはtmuxとずぶずぶの関係になりました。

自分のメモという意味も込めて、本家のマニュアルだったり各種WEBサイトさまからパクったを参考にさせていただき1年こつこつ作った.tmux.confを晒します。(ネットに散らばっている情報をまとめるのも良いことかなと考えて晒しました。)

.tmux.confの説明

基本的に説明はコメントに書いてありますのでそこを読んでください。

なお、私はSessionとPaneのみ使用してWindow機能は全く使わないので、Window周りの設定は皆無です。
(SessionとWindow併せて使ってると混乱しないですか。。?)

外観はあまり変えていません。ステータスバーの文字や色を少し変えたりとか程度です。

お気に入りの設定は[Shift+上キー/下キー]でセッション間移動と、[Shift+左/右キー]でパネル移動の部分です。
prefixを入力しなくて良いのでこれだけで操作が快適になります。

なお、tmuxはMacOSのiTerm2で使用していてバージョンはtmux 3.1bです。

.tmux.conf

gist26c63a975f8fe99dab96e266653f8ec2

ターミナルログイン時に自動でtmux起動

上記.tmux.confに合わせて、.zshrcに下記を追加してターミナルにログインしたときに自動でtmuxに入るようにしています。
下記サイトさまのものを少しだけ変えて使用してます(大感謝)。

qiita.com

デタッチされた既存のセッションがある場合はそこに自動でアタッチして、既存のデタッチされたセッションが無い場合は新規セッションを作成しています。(こういうことしておかないと忘れ去られたセッションがどんどん溜まっていく。。。)

基本的に上記サイト様を参考にして欲しいですが、自動アタッチするように少しだけ変更したので迷いましたが晒しておきます。ほぼそのままです。

.zshrc

.zshrcに下記を追記

function is_exists() { type "$1" >/dev/null 2>&1; return $?; }
function is_osx() { [[ $OSTYPE == darwin* ]]; }
function is_tmux_running() { [ ! -z "$TMUX" ]; }
function shell_has_started_interactively() { [ ! -z "$PS1" ]; }
function is_ssh_running() { [ ! -z "$SSH_CONECTION" ]; }
function tmux_automatically_attach_session(){
if is_tmux_running; then
  ! is_exists 'tmux' && return 1
else
  if shell_has_started_interactively && ! is_ssh_running; then
    if ! is_exists 'tmux'; then
      echo 'Error: tmux command not found' 2>&1
      return 1
    fi
    if tmux has-session >/dev/null 2>&1 && tmux list-sessions | grep -v attached | grep -qE create; then
      # detached session exists
      # auto attach
      tmux attach-session
    fi

    if is_osx && is_exists 'reattach-to-user-namespace'; then
      # on OS X force tmux's default command
      # to spawn a shell in the user's namespace
      tmux_config=$(cat $HOME/.tmux.conf <(echo 'setーoption -g default-command "reattach-to-user-namespace -l $SHELL"'))
      tmux -f <(echo "$tmux_config") new-session && echo "$(tmux -V) created new session supported OS X"
    else
      tmux new-session
    fi
  fi
fi
}

tmux_automatically_attach_session

参考サイトさま一覧

qiita.com

qiita.com

unix.stackexchange.com

シェアする