tmuxのペインとレイアウト
目標
1つのウィンドウの中でペインを分割し、タイトルを付け、拡大・同期して、スクロールバックをファイルに残します。最後に、開発レイアウトを一度に再現するスクリプトを作ります。
なぜ重要なのか
ペインは、「画面を分ける機能」以上のものです。エディター・サーバー・ログを1つの画面に置くと、コンテキストの切り替えコストがなくなり、複数のサーバーにつないだペインを同期すれば、同じコマンドを一度に実行できます。そして、実務でよく抜けるのが新しいペインの作業ディレクトリです。指定しないとホームで開くため、毎回cdを打ち直す必要があります。最後に、tmuxの-hは「横分割」ではなく左右配置という意味なので、ほとんどの人が一度は混同します。口頭では、左右・上下と呼ぶほうが安全です。
ステップ
panesセッションにdevという名前のウィンドウを作成し、ペインを2つ以上に分割してください。devウィンドウのペインをちょうど3つにしてください。- 3つのペインのタイトルを、それぞれ
editor、server、logsに指定してください。 devウィンドウのペインの1つを、拡大(zoom)した状態にしてください。- タイトルが
logsのペインで、tail -fが実行され続けるようにしてください。 devウィンドウのペインの同期(synchronize-panes)を有効にしてください。- ペインの1つで
labhub-pane-checkを出力し、続けてseq 1 100を実行したあと、そのペインのスクロールバック全体を/root/tmux/pane.logに保存してください。ファイルにはlabhub-pane-checkと100の両方が含まれている必要があり、100行以上である必要があります。 /root/tmux/dev.sh <세션이름>を作成してください(プレースホルダーはセッション名です)。引数として受け取った名前のセッションをアタッチせずに作成し、devウィンドウにペインを3つ置いて、タイトルはeditor/server/logs、そして、editorペインの作業ディレクトリが/root/tmuxである必要があります。
参考
tmux select-pane -t 대상 -T 제목(プレースホルダーは、順に対象とタイトルです)で、ペインのタイトルを指定します。tmux capture-pane -p -S - -t 대상(プレースホルダーは対象です)は、スクロールバックの先頭から出力します。tmux split-window -c /경로(プレースホルダーはパスです)で、新しいペインの開始ディレクトリを指定します。現在のペインのパスを引き継ぐには、-c "#{pane_current_path}"を使います。- よくあるミス1: ステップ7で
-S -を外すと、見えている画面だけが入り、100行になりません。 - よくあるミス2: ステップ6で同期を有効にしたまま別の作業をすると、すべてのペインに同じコマンドが入ります。ラボの順序を考慮してください。
ペインを分割する
panesセッションにdevという名前のウィンドウを作成し、ペインを2つ以上に分割してください。
prefix + %は左右、prefix + "は上下に分割します。CLIではsplit-windowです。
3分割にする
devウィンドウのペインをちょうど3つにしてください。
すでに分割したペインを、もう一度分割します。どのペインがアクティブかによって、分割される位置が変わります。
ペインにタイトルを付ける
3つのペインのタイトルを、それぞれeditor、server、logsに指定してください。
select-paneに、タイトルを指定するオプションがあります。ペインごとに別々に付ける必要があります。
ペインを拡大する
devウィンドウのペインの1つを、拡大(zoom)した状態にしてください。
prefix + zで切り替えます。採点時点で、拡大状態にしておいてください。
logsペインでログを追跡する
タイトルがlogsのペインで、tail -fが実行され続けるようにしてください。
タイトルがlogsのペインで、tail -fを実行します。対象のペインを指定して、send-keysで送ることもできます。
ペインの同期を有効にする
devウィンドウのペインの同期(synchronize-panes)を有効にしてください。
ウィンドウオプションなので、setwを使います。有効にすると、入力がすべてのペインに同時に送られます。
スクロールバックをファイルに保存する
ペインの1つでlabhub-pane-checkを出力し、続けてseq 1 100を実行したあと、そのペインのスクロールバック全体を/root/tmux/pane.logに保存してください。ファイルにはlabhub-pane-checkと100の両方が含まれている必要があり、100行以上である必要があります。
capture-paneは、デフォルトでは見えている画面だけを取得します。開始位置をスクロールバックの一番上に指定するオプションが必要です。
開発レイアウトのスクリプト
/root/tmux/dev.sh <세션이름>を作成してください(プレースホルダーはセッション名です)。引数として受け取った名前のセッションをアタッチせずに作成し、devウィンドウにペインを3つ置いて、タイトルはeditor/server/logs、そして、editorペインの作業ディレクトリが/root/tmuxである必要があります。
新しいペインは、指定しないとホームで開きます。作業ディレクトリを明示するオプションを探してみてください。