インフラエンジニアbacchiのわかったことまとめ

bacchi.me

Macでtmuxを使う+オレの.tmux.conf

長らくscreenを愛用してきましたが、同僚がtmuxを使っているのを見てすごくいい感じだったので乗り換えました。

Macにインストールした時のメモ。

tmuxインストール

下記の手順でtmuxとtmuxで使える便利ツールをインストール。

% brew install tmux
% git clone https://github.com/KeitaNakamura/tmux-utils.git
% mv tmux-utils/bin/* /usr/local/bin/.

.tmux.confの編集

tmuxの設定ファイルを仕込みます。

% vim .tmux.conf
# prefixキーをC-jに変更する
set -g prefix C-j

# キーストロークのディレイを減らす
set -sg escape-time 1

# ウィンドウのインデックスを1から始める
set -g base-index 1

# ペインのインデックスを1から始める
setw -g pane-base-index 1

# 設定ファイルをリロードする
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# | でペインを縦に分割する
bind | split-window -h

# - でペインを横に分割する
bind - split-window -v

# Vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

# Vimのキーバインドでペインをリサイズする
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

# キーバインド(コピーモード)

bind Space copy-mode
bind p paste-buffer

# マウス操作を有効にする
setw -g mouse on

# 256色端末を使用する
set -g default-terminal "screen-256color"

# ステータスバーの色を設定する
set -g status-fg white
set -g status-bg black

# ウィンドウリストの色を設定する
setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim
# アクティブなウィンドウを目立たせる
setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

# ペインボーダーの色を設定する
set -g pane-border-fg green
set -g pane-border-bg black
# アクティブなペインを目立たせる
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

# コマンドラインの色を設定する
set -g message-fg white
set -g message-bg black
set -g message-attr bright

# コピーモードを設定する
## viのキーバインドを使用する
setw -g mode-keys vi
## クリップボード共有を有効にする
set-option -g default-command "reattach-to-user-namespace -l zsh"
## コピーモードの操作をvi風に設定する
bind-key -T copy-mode-vi v send-keys -X begin-selection
### コピーモード中 C-v で矩形選択開始
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
### 1行選択
bind-key -T copy-mode-vi V send-keys -X select-line
bind-key -T copy-mode-vi y send-keys copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
### 1行コピー
bind-key -T copy-mode-vi Y send-keys copy-line
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
### Esc キーでコピーの反転を解除(コピーモードは抜けない)
bind-key -T copy-mode-vi Escape send-keys -X clear-selection
### Ctrl-c キーでコピーの反転を解除し、コピーモードから抜ける
bind-key -T copy-mode-vi C-c send-keys -X cancel
### Vi モード中に Ctrl-a で行頭に(Emacs ライク)
bind-key -T copy-mode-vi C-a send-keys -X start-of-line
### Vi モード中に Ctrl-e で行末に(Emacs ライク)
bind-key -T copy-mode-vi C-e send-keys -X end-of-line
### 単語の最初の1文字に移動
bind-key -T copy-mode-vi w send-keys -X next-word
### 単語の最後の1文字に移動
bind-key -T copy-mode-vi e send-keys -X next-word-end
### w の逆の動き back
bind-key -T copy-mode-vi b send-keys -X previous-word
### 画面上に映る最上行に移動
bind-key -T copy-mode-vi g send-keys -X top-line
### 画面上に映る最下行に移動
bind-key -T copy-mode-vi G send-keys -X bottom-line
### 前方検索
bind-key -T copy-mode-vi / send-keys -X search-forward
### 後方検索
bind-key -T copy-mode-vi ? send-keys -X search-backward
### ページスクロール
bind-key -T copy-mode-vi C-n send-keys -X page-up
bind-key -T copy-mode-vi C-f send-keys -X page-down
### ページ送り
bind-key -T copy-mode-vi C-u send-keys -X scroll-up
bind-key -T copy-mode-vi C-d send-keys -X scroll-down

# ステータスバーを設定する
## ステータスバーをトップに配置する
set-option -g status-position top

## 左パネルを設定する
### #H => マシン名
### #P => ペイン番号
### 最左に表示
set -g status-left-length 90
set-option -g status-left '#[fg=green]Session: #S #[fg=yellow]#I #H:[#P]'

## 右パネルを設定する
### バッテリー残量、現在時刻
### 最右に表示
set-option -g status-right-length 200
set-option -g status-right '#(battery -t) [%Y-%m-%d(%a) %H:%M]'

## ステータスバーを1秒毎に描画し直す
set-option -g status-interval 1

## ウィンドウリストの位置を中心寄せにする
set-option -g status-justify centre

## ヴィジュアルノーティフィケーションを有効にする
setw -g monitor-activity on
set -g visual-activity on

トラブル発生

仕込みがおわったので、tmuxを起動しようとすると『exited』と表示され、プロセスが即落ちする現象が起きてまともに使えませんでした。
調べてみると、reattach-to-user-namespaceを使おうとしているのに、reattach-to-user-namespaceが入っていないことが原因でした。

下記のようにインストールしてやればtmuxが起動するようになりました!

% brew install reattach-to-user-namespace
  • B!