意外と知られていないかもしれないから書いておきます。

・Ctrl+mは、enterになる。
・Ctrl+[は、escになる。

なので、「escが遠い」と悩んでいる人は、Crtl+[でescにすると、多少、近くなる。
enterが遠いと感じる人は少ないと思うけど、リターンキーが壊れた時に、良かった、と思うかもしれない。


さようならGNU screen。いままでありがとう。



そういえばGNU screenもzshも学生時代からの付き合いなので、もう10年どころじゃなく使っている・・・。

長らく使っていた仮想端末アプリGNU screenから、最近何かと話題のtmuxに、この週末で乗り換えました。今まではちょっと気になって使ってみることはありましたが、メインの作業環境を切りかえるまでは決断できずにいました。慣れないツールで作業効率が落ちるのは本末転倒だし。

ただ、今回、切り替えようと決断したのには理由があります。実は最近、複数台のサーバーを設定する作業があったんです。結局、台数分、同じコマンドを同じように打っていて、無駄だなぁと思ったのがきっかけ。同じコマンドを複数のターミナルに同時に投入したい。これだけのシンプルな理由からです。

いろいろ調べてみると、どうにも最近のトレンドは、MacでiTerm2で、tmuxでzshという環境らしいですし(いや、ソースが偏ってると思いますが)。私の今の環境は、MacでiTerm2で、screenでzsh。あとはtmuxだけだったしね。

そんなこんなで切り替えを敢行し、カスタマイズを完了し、概ね使える感じになったので、ちょっと紹介しておきます。

(1)prefixを何にするか。

まずはprefixを何にするかが最初の問題です。screenのデフォルトはCtrl-A、tmuxはCtrl-Bです。どちらもカーソル移動に当たっているため、これは避けます(そういえばdockerコンソールも同じようなキーバインドだったような・・・なんでこの辺に当たるのかしら)。

私は古くからscreenのprefixでCtrl-Zを使ってきたので、これを使います。
Ctrl-Zといえばサスペンドシグナルなので、まぁ使うといえば使いますし、使わないといえば使わない。むしろ不意にサスペンドされても困ることが多いので、そのままCtrl-Zをprefixに採用。

prefixを変えるとかなり混乱するので、これは当然ながら踏襲します。

## Keybind
unbind-key C-b
set-option -g prefix C-z
bind-key C-z send-prefix

(2)お約束の設定は、ネットの情報を見て真似をする。

日本語関連とか、コピーモードのキーマップとか。この辺は普通に人の真似をしてみる。コピーモードについてはscreenが元々viキーマップだったので、これを踏襲しています。

set-window-option -g utf8 on
set-window-option -g mode-keys vi

コピーモードの使い勝手が若干異なっているのは慣れの範囲ですね。
screenだと、spaceからspaceでコピーされたんですが、tmuxでは、spaceではじめてENTERでコピー。ちょっとこれは戸惑いました。
ただtmuxのコピーバッファーにはyankがあるのは、うまく使えるとうれしいかもしれないです。

(3)Ctrlは押しっぱなしで次のストロークも打てるようにしよう

bind-key C-a last-window
bind-key C-n next-window
bind-key C-p previous-window
bind-key C-l select-pane -t :.+
bind-key C-c new-window

なぜか知りませんが、デフォルトキーバインドって、Ctrl-Zのプレフィックスを入れておきながら、次のコマンドキーはCtrl無しってのが多い。Ctrlは押したら押しっぱなしで次のキーも連打したいので、追加設定を入れています。特にCtrl-aは連打しながら2つの画面を見比べるという操作を多様するため、これがCtrl押しっぱなしできないとちょっとしんどいです。

screenでも同じように設定してたし。

(4)設定再読込はキーバインドしておいたほうが便利

bind R source-file ~/.tmux.conf \; display-message "Reload Config!!"

しばらく設定はいろいろ弄りそうだし、再読込がコマンド一発で行けると楽かなと。
結構重宝します。特にstatusラインの見た目の調整とか。

(5)pane操作は直感に合わせる

# resize
bind -r < resize-pane -L 1
bind -r > resize-pane -R 1
bind -r - resize-pane -D 1
bind -r + resize-pane -U 1

screenでは、画面は横に分割しかできず、サイズ増減を+と-に割り振って調整していましたが、tmuxでは縦横分割が可能ですので、サイズ増減も、上下と左右になっています。これでpane配置は自由自在です。-rオプションは連打が可能な設定で、要するにprefix+<<<<とすると、どんどんpaneが左に縮小(拡大)していきます。

このpane配置がdetach/attachでちゃんと戻ってくるところはtmuxの素晴らしいところの一つです。screenの場合、画面分割して並べておいても、detach/attachしたらバラバラになっちゃうし(これ設定かな?)、そうするとsplitして画面集めて・・・ってやらないといけない。これは相当に便利です。

(6)そして目玉はsynchronize

# sync-pane
bind e setw synchronize-panes on
bind E setw synchronize-panes off

これが目玉ですね。windowに表示されたすべてのpaneに同じコマンドを投入できる、synchronize-panes設定。これをキーバインドしておくことで、同時に複数の画面を操作したくなったら、onにして、個別に調整したくなったらoffにして、渡り歩いて、またonにして作業を継続して・・・とか、自由自在です。

昨今、クラウド環境やら、クラスタ環境やらで、同じような設定を複数環境に同時進行で実施する場合に、すばらしく便利な動作です。screenがこれできないんだな。

ちなみに、一時的にコマンド同時投入をしたくない、というような場合に、該当paneを他のwindowに退避させておくような操作も可能。

join-pane -s :0.1 <window 0のpane 1を、カレントwindowに持ってくる>
join-pane -dt :0.2 <カレントwindowのpane2を、window 0に移す>

これは現状キーバインドしていませんが、なんとなく引数付きでキーバインドしておいても良さそうな気がしないでもない(コマンドを忘れそうな気がする)。

(7)その他、pane周り

prefix後に矢印キーで、アクティブpaneを上下左右に変更できます。prefix qでpane番号を確認後、すみやかに番号を入力することで切り替えることもできる。このpane操作の直感的なところは、非常に効率が良くていいです。


以上、tmuxに乗り換える上で最低限、screenの操作感を維持するために設定、調整した内容です。他にもstatusラインの見た目などはいろいろ他のサイトを見て調整しています。
結構、tmux関連は、画面を晒しているサイトが多いのも特徴的で、なんか熱いなぁ、と思いました。

ちなみに、関連して、ですが、これまた10年以上育ててきたzshの設定も整理しました。というのも、今回、tmuxに切り替えたら、BackSpaceキーがDeleteになるという問題が出て、これが「stty erase ^H」設定を消したらうまく動くようになったということがあったためです。

正直、昔はいろいろ設定しないとうまく動かなかったものが、最近の環境では、何もしないほうが安定して動くことも多いです。また、最近のzshでは標準設定で便利に使えるところを、過去に個別設定したところが上書き設定していて動かなくて、損していた、なんてこともあります。

この辺、ちゃんと見なおしたほうが良いなぁと思いました。


というわけで、この週末2日、体を慣らすこともかねていろいろ試行錯誤して、切り替え完了しました。まだしばらくは調整しつつ、また、面白い使い方を模索しつつ、行こうかな、と思っています。
なんかこのサービス、微妙・・・。

au WALLETカードが届きました。なんど郵便で届いていて驚いたんですが、なるほど、このカード、利用開始手続きをしないと使えないので、普通に郵便で送れるのか。

早速初期チャージが1000円あったので、近所のセブン-イレブンで使ってみました。「カードで」って言ってau WALLETカードを使う。まあ普通のクレジットカードと同じです。アプリで見ると、買い物した直後にはもう残高が減っていたので、この辺のリアルタイム性はおさいふケータイに引けを取りません。

ただ、チャージしようと思った時、ハマりました。

キャリア決済でチャージしようと思ったんですが、なんと、料金引き落としが指定カードじゃないと使えないときた。じゃぁクレカでチャージしようと思ったら、こっちも指定カードが。しかも結構カードが限られている状態。うーん、これは困ったなぁ。

しかも調べてみると、意外に還元率は低いし、あれあれあれ?って感じ。

いやそんなの調べておけって話なんですが、思った以上に条件がいろいろあって、結局このカードでメリット享受出来る人って、じぶん銀行に口座持っていて、そこからチャージできる人だけなんじゃないの?と思ったり。

普通にクレジットカードを作れて、そっちでポイント還元サイクルが回せている人には、あまりメリット無いんじゃないのかなぁと、素直に思いました。

少なくとも私はJCBドライバーズプラスカードとQUICPAYをメインにして、ポイントを回しています。ここからガソリン代、高速代意外の出費を切り出して他のカード(Suica関連とか)に分けて運用しており、今回、au WALLETでもう一つポイントをうまく拾える方法ができることを期待していたのですが・・・ちょいと肩透かし状態です。

ただポイントキャンペーンがまだいろいろありそうなので、しばらくはウォッチしたいと思いますが。なんだかよくよくこの状況を考えてみると、結局au/KDDIのキャリアの都合が見え隠れするサービスだなぁと、ちょいと残念な感じです。

・・・キャリア終わった、って、ことか。うーん。