tmuxの学習記録と初心者用のリンク集

少し前に、Perl入学式校長のpapixさんがこのようなことをつぶやいておられて

ああ〜tmux、前に一瞬試してまったく意味わからず終わったなあ。と思って、でもpapixさんのライブコーディングはぼくも現場で何度か拝見して印象に残っていたので、手元で再現してみたいなと思って少し試したのでその記録。

まずは確かドットインストールでそのようなレッスンがあったはず……と思って見たらやはりあって。

プレミアム会員用のようですが、入ってて良かったプレミアム。
ほんとオススメですよ! 初心者にはとくに。

これをひとしきり見まして、あとはTwitterでこんなことを言っていました*1ら、

いや設定でVimっぽくできるよ! と、Facebookの友人から教えてもらったりして、ん〜よし、じゃあいっちょ調べてみるか! ということでブワーっていろいろ検索したのですが、とりあえず自分的にとくに参考になった記事は以下の2つでした。

前者は一覧性の高い情報が充実していながら画像付きのチュートリアル的な風合いもあり、かつ文章が語りかける感じなので初心者にはとくにいい感じだと思いました。

後者は扱われている情報が結構いちいち要領を得ているというか、たとえば

ウィンドウの入れ替え(1と入れ替える)

swap-window -t 1

なんていう情報はその後も何度も「あれってどうやるんだっけ……」と、いくつものURLを探し直したりしたのだけど、そのつど結局こちらに行き着いたりしたので、上記のようにマイ殿堂入り的な場所に置かせて頂くことにしました。

tmux情報リンク集(極私的)

それ以外にも有用な情報は本当にたくさんあって、なんでしょう、tmuxってこんなに情報あるんだ……すごい、ありがたいな……みたいな感じで。

ということで以下、順不同ですが今回チェックして、後からまた見返すかもしれないリンクを列記しておきます。(主にのちの自分用)

.tmux.confの例など

いやあ、たくさんありますね……実際にはまだまだあるのですが、とりあえず今の自分のレベルからまた見返しやすいものに限定しました。
皆様ありがとうございます。

いくつかの問題

さて、Vimを使い始めた頃もそうだったのですが、とりあえずtmuxの第一印象としては、「うわ、学習コスト高いな……これどこが便利なんだ……というか便利と言う人がいるのはわかる気がするし習得すればそうなのだろうけど、でもそれまでの間はこれ、不便でしかないだろ……」みたいに普通に思って。

たとえばVimだと、普通のMacのエディタならシフト押したまま矢印キーで語を選択とか、それをまた選択したままコントロール+シフト+Rってすると漢字カナ変換の候補が出てきたりするとかいう機能がえらい重宝していたんだけど、そういうのできない、みたいな不満を導入初期には痛切に感じたのですが、そういう「なんでこれができないんだ」的な。まあ厳密には、Vimの場合は「他の普通のエディタならできるこれがなぜ出来ないんだ」であって、このtmuxの場合はそういう「何かと比べて」ということではなく、「うっ、なぜこうなるんだ……というかどうやって元に戻したらいいのコレ」みたいないちいち「未知の敵」という感じなのでちょっと違うといえば違うんだけど。

ともあれ、以下はそういう入門時ならではの不全感というか、後になって「へえ、こんなことで躓いてたのか、忘れてた(笑)」みたいに参考にできるようメモっておく事々です。

なんかスクロールできない

これは振り返ってみると普段使っている素のiTerm2でもできていなかった気がするんだけど、tmuxを使ってから初めて不便だと感じたことで、しかし以下を見て解決しました。

あと、ついでにというか、ターミナル上でVimを開いたときにマウスでバッファ内をスクロールできないことに気づいて*2、以下を参考に.vimrcを編集したらそれもできるようになりました。ありがたい!

.tmux.confで一度追加した記述を削除しても設定が戻らない

これはけっこう驚く現象で、tmuxのデフォルトのキーバインドを.tmux.confで別の設定に上書きして、「ああ、これやっぱりあまり良くないな。元に戻そう」と思って、その部分を削除しても、挙動はデフォルトには戻らなくて、望む設定を新たに書き入れなければいけない。

.vimrcとか.bashrcだったら、一度設定した内容はコメントアウトするなり削除するなりすれば元に戻るけど、.tmux.confだとかつて書き入れていたコマンドを消しても、一回読み込んだそれが別の何かで上書きするまで残っているので気味が悪い……というか。

で、これはどうも tmux kill-server して再起動してしまえば元に戻るというか、それによって.tmux.confに書かれていない設定は効力を失うようなんだけど、いやいや……それだとなんか、わりと「セッションを保つ」ことに意味があるtmux自身の存在否定では……みたいな感じもあって。

個人的にはあんまりtmux kill-server 頻繁にはやりたくない気がするし、そもそも設定ファイルに書かれていない設定は読み込み直した段階でデフォルトに戻るべきだと思うんですがどうなんでしょうね……。

examplesというのを見つけた

というかデフォルト設定、そもそもどこかに明記されてないのか……? ヘルプとか公式マニュアルとかに……と思って、しかしどこかの記事にもあったのだけど、tmuxってVimのような充実したヘルプとかが普通になくて、なんか「習うより慣れろ、だろ?」みたいな、自分の目と手で盗んで身につけろよ、みたいな現場主義・実践主義みたいな感じでけっこうそこも途方にくれたのだけど、いろいろ探しているうちに、いやじつは /usr/local/share/tmuxの中にexamplesってディレクトリがあるからそれを見るといいよ、みたいな情報に行き当たって。

それで、探してみたら確かにそういうのがあって、いくつかのファイルが入っているのだけど、ん〜、でもなんか、これはそれこそいろんな「俺のやり方」が個別の例として示されてる感じというか、公式なデフォルト設定とかではないようなので、上記のブログ記事群にやや近い感じのものとして現在は捉え中です。

追記:
後から気づいたのだけど、公式サイトやレポジトリというのがあって、見てみたら色々情報が揃っていそう。

まずはこれでREADMEやCHANGESやFAQを見回ってみたいと思います。
(追記ここまで)

Perlのヴァージョンが5.12になってた

今、僕は普段はPerlだとplenvで入れたv5.20.0を使っているのですが、なぜかtmuxで

$ perl -v

ってやると、5.12が出てきて、一部のスクリプトが動かなかったりして。

つまり、どうもplenvで入れた5.20ではなく、システムのPerlが読まれているみたい。
で、これも検索したら、まったく同じ話ではないけど、似たもので以下が見つかって。

以前にsnippetの話でお世話になりました @kazuph さんの記事ですが、そちらにある設定をコピーしましたら直りました。今回もお世話になりました。

まとめ

ということで、まだあまりその恩恵を受けてはいないというか、勉強することそのものの楽しさに導かれてやっているような感じのtmux道中ではありますが、とりあえずここまでに調べた&見回った情報が散逸して後でまた同じぐらいの検索の旅に出立してしまわないように、諸々まとめてみました。

予告

とりあえず現状辿りついた踊り場的な自分の.tmux.confを載せておこうと思っていたのですが、体力が切れたので次の機会としたいと思います。

*1:後述の道程で確かにVimライクな挙動もできることはわかったのですが、今あらためて思い返すと、何をもって一番「Emacsライク」と感じたかというと、コマンドを叩く前に必ずPrefixキーを叩くから(それもコントロール+何かで)だな、と思いました。

*2:普段MacVim.app使っているので気づかなかったみたい。