こんにちは、ECナビ事業本部新卒エンジニアの鈴木(とっしー)です。

配属されてから約3ヶ月が過ぎようとしています。時の流れが早いですね...
自分もいーしーきゃんびーの洗礼を受けながらも日々コードを書いています。

先日、先輩とこんな話をしていました。

(回想)
「とっしーのターミナルは、本番機を触っているのか開発機を触っているのか分かりにくいね」
「先輩はどうしてるんですか?」
「開発機はiTerm、本番機はターミナルを使い分けて文字色を変えて視覚的に分かるようにしてるよ」
「なるほど、それいいですね!」
(回想おわり)

確かに、ホスト名をプロンプトに出すようにはしていましたがそれだけだと自分が
どこで作業しているのかを混乱してしまいそうです。


このままでは危険だと思い、自分ももう少しどこで作業してますということを
前面に押し出した方がいいと思い
色々調べてカスタマイズしてみました。

今回カスタマイズしたのは3点
・プロンプト
・vimのステータスライン
・ssh
でitermの背景色変更
では1つずつ紹介していきます。


▼プロンプト
日頃からよく見るプロンプトにもう少しはっきりと「開発機で作業してます」とか「本番機で作業してます」
という情報を見せるようにしました。

開発機の場合はこんな感じです。(緑色だと安心して作業ができますね)

開発機プロンプト

こちらは本番機。 (赤色だと慎重に作業をしなきゃいけないという感じになりますね)

本番機プロンプト

ソースはこんな感じです。
case $HOST in
    'ココに開発機のhostnameを' )
        my_host="開発機"
        my_fg_host=${fg[green]}
        my_bg_host=${bg[reset_color]}
    ;;
    'ココに本番機のhostnameを' )
        my_host='本番機'
        my_fg_host=${fg[red]}
        my_bg_host=${bg[reset_color]}
    ;;
esac

PROMPT="%{$my_bg_host%}%{$my_fg_host%}$my_host%{${reset_color}%}%{${fg[cyan]}%}%n@%m%{${fg[yellow]}%}-> %{${reset_color}%}"

RPROMPT="%1(v|%F{red}%1v%f|)%{${fg[green]}%}[%~]%{${reset_color}%}%{$my_bg_host%}%{$my_fg_host%}$my_host%{${reset_color}%}" 

やっていることは、ホスト名ごとに表示するメッセージと色を変えています。
ホスト名よりは開発機とか本番機とかの方が分かりやすいですね。


▼Vimのステータスライン
(先に、自分のエディタはEmacsなんだけどという方申し訳ありません。)
日頃からよく使用するvim。これを開いているときは、プロンプトの情報を見れないので、

こんな感じで、vimのステータスラインでもプロンプトと同じようなメッセージを出すようにしましょう。


vimステータスライン

ソースはこんな感じ。

if hostname() ==? 'ココに開発機のhostnameを'
    let message='開発機'
elseif hostname() ==? 'ココに本番機のhostnameを'
    let message='本番機'
endif

" ステータスライン表示方法
set statusline=[%{message}]%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %F%=%l,%c%V%8P\ [%{message}][%{hostname()}]
こちらもプロンプトのときと同じですね。

▼sshで背景色変更
今までは、メッセージを出すだけでしたが、そもそも本番機に繋いだら背景色を真っ赤にするとか
した方がより禍々しい感じがでそうですね。
これをやるためには、ssh-host-color.shを使いました。

本番機ターミナル

より「本番機だぜ!」感が出ましたね。

▼最後に
本番機で作業しているということを意識させるためにあれこれカスタマイズしてきました。
しかしこれはあくまで意識させるためです。一番大事なことはコマンドを打つ場合などは
一旦確認してから
実行することですね。