Zshでホスト名とユーザ名とカレントディレクトリをTerminal(&タブ)のタイトルに表示させてみた
Gnome Terminalはタブを利用できるので重宝しているのですが、普段の開発時には複数のタブを開きサーバにログインしているので、今開いているタブがどのサーバなのか咄嗟に分からないことがあります。
なのでホスト名とユーザ名とカレントディレクトリをTerminal(&タブ)のタイトルに表示するようにしました。
まーありがちな処理なのですが、カレントディレクトリが深い場合に表示しきれなくなってしまうので、ちょっとだけ工夫して下記のように省略表示させました。
/path/to/directory ↓ /p/t/directory
~/.zshrc
function changetitle { # pwdを二回も実行しているのがなんかダサい... current_dir=`pwd | sed -e "s%\(/\([^.]\|\..\)\)[^/]*%\1%g"``pwd | sed -e "s%^.*/\([^.]\|\..\)\([^/]*\)$%\2%"` # タイトル用に整形 title=[${USER}@${HOST%%.*}]${current_dir} case "${TERM}" in xterm*|kterm*|rxvt*) echo -ne "\033]0;${title}\007" ;; screen*) echo -ne "\033P\033]0;${title}\007\033\\" ;; esac } # zsh起動時にとりあえず実行 changetitle # cd実行後に変更 function chpwd() { changetitle } # Screenの場合、window切り替え時に前のwindowのタイトルがTerminal(&タブ)のタイトルとして # 残ってしまうのでせめてcdコマンド以外のコマンドでも実行前にタイトルを変更 preexec () { changetitle }