GNU screenからtmuxへ移行する

.screenrcを.tmux.confに変更しています。

といっても簡単な設定でGNU Screenを使ってる場合向けです。

ここではエスケープキーをCtrl-uにしているので、^UuやC-uをお好きなキーバインディングに変更して下さい。

windowのタイトルは各ホストのPROMPT_COMMANDに任せています。

 

1 ${HOME}/.screenrc

ウィンドウを切り替える程度の用途でしか設定していません。

# Bind escape key to C-u
escape ^Uu

# Disable start message
startup_message off

# Enable status bar
hardstatus on
hardstatus alwayslastline "%{= kW}%-Lw%{= wK}%n-%f %t%{= kW}%+Lw""

# For broken ncurses, e.g. linux kernel make menuconfig
cjkwidth off

0001_screen.png

1.1 screen上のssh先でさらにscreenした場合のエスケープキー

Host1で実行したscreen上でsshを使ってHost2へ接続し、さらにHost2上でscreenを実行した場合、Host2のscreen向けのエスケープキーはCtrl-u uとなります。

 

しかしいちいちCtrl-u uを押すのは面倒です。

私はscreenだけでなくtmuxでもそうしていますが、screen上のsshの接続先では、別の.screenrcを読み込むようにして別のエスケープキーを割り当てると良いでしょう。

 

私はmyscreen.shというスクリプトを用意して、上記の内容の.screenrcをescape ^Jjとしたmyscreen.configを用いています。

0002_screen-on-screen-via-ssh.png

2 ${HOME}/.tmux.conf

上記の.screenrcを置き換えたものは以下の通りです。

# Bind escape key to C-u
unbind-key -n C-a
set -g prefix C-u

# C-u u is for tmux inside tmux via ssh.
bind-key u send-prefix

# Disable left and right side information at status bar.
set -g status-left ''
set -g status-right ''

# C-u C-u switch last window, true is for one window.
bind C-u run "tmux last-window || true"

# Window color
set -g status-fg white
set -g status-bg black

# Curernt window color
set -g window-status-current-fg black
set -g window-status-current-bg white

0003_tmux.png