◆ CUI 画面でタブや画面分割ができるツール
◆ 一度切断しても途中から続けられるし 複数の PC から同時に使っても大丈夫

必要なときだけ使ってるのでよくよく忘れてるんですよね
常に使えばいいかもしれないけど 不便な部分もあるので必要なときだけにしてます

byobu って

Linux のコマンドラインをタブっぽく使えるようにしてくれるツールです
GUI で Linux 使ってるとターミナルのウィンドウを複数開いたりウィンドウの中にタブを作れたりします

guitab-linux

サーバ用の CUI のみでもそういうことしたいなっていうときに使えるツールです
タブだけじゃなく画面内で分割することもできます

byobu-image

下のバーの 「0:root@localhost:~」と「1:for dnf」がそれぞれタブです
0 のほうがアクティブになっています


単純にタブ分割する以外にもメリットはあります
CUI で使うものって基本は ssh 接続で別のサーバにアクセスしていることが多いと思います
作業中に接続が切れたり 間違って閉じてしまったら中途半端な部分で強制終了されたり 画面上のログが消えてしまったりと困ることがあります
byobu だとセッションというものでターミナルの作業中の状態を管理してくれています
途中で ssh クライアントのウィンドウを閉じたりしても再度ログインして byobu コマンドを実行すれば作業中の状態を復元してくれます

ミス防止だけでなく デスクトップ PC で接続して作業していたけど 出かけるから続きをノート PC からやりたいなってときにも使えます
そのサーバへの接続元は関係なく そのサーバ内で管理されているのでノート PC から接続して byobu コマンドを実行したら続きから実行できます
同時に複数の接続で byobu コマンドを使った場合は動きが同期されるので 同時に接続しても大丈夫です

byobusync

tmux と screen

こういった機能は byobu が実装しているというわけではなく tmux などすでにあるツールを内部で使っています
byobu は tmux と screen という 2 つのツールに対応しています
これらの複雑な設定なしで簡単に使えるようにしてくれているのが byobu というツールです

私は byobu しかつかったことがなくて直接 tmux や screen は使ったことないです

基本の使い方

fedora なら dnf でインストールできます

sudo dnf install byobu

最初にバックエンドで tmux か screen のどっちを使うか指定します

byobu-select-backend tmux

tmux のほうが新しくて高機能らしいので私はこっちしか使ってません
あとは byobu コマンドを実行するだけです

byobu

タブ

F2 で新規タブを作ります
F3 F4 でタブ切り替えです
違いは戻ると進むです

ところでタブとよんでますがちゃんとした呼び方だと Window のようです
見た目がタブなのでタブと言ったほうが伝わりやすいのでここではタブで通します

画面分割

Shift-F2 で現在アクティブな画面を上下に分割します
Ctrl-F2 だと左右に分割します

Shift-F3
Shift-F4 で分割した画面のフォーカスを切り替えます
こっちも違いは戻ると進むです

Ctrl-F3Ctrl-F4 では分割した画面を並び替えることが出来ます


基本的なタブと画面分割の操作はこれだけです
高度なことしないならこれだけで全然困りません

F1 でヘルプが開けて 一番上にヘルプがあるのでそこで他の操作一覧が見れます
使いこなしたいなら読んでみると良いのではないでしょうか

縦横切替

できてほしいのにできない機能が縦分割と横分割の切り替えです
今左右に分割しているけど上下分割にしたいなと思ったときに一発で切り替えられません
対して重要じゃないなら いったん片方を exit して再分割するのですが アップデート中だったりコンパイル中だったり 両方止められない状態だと困ります

諦めていたのですが使っているうちに出来る方法を見つけました
ちょっと手間ですけど

左右に分割している状態があります
byobufsc01

これを上下分割に変更するのが目的です

まずはどちらかを上下に分割します
byobufsc02

ここでは右側を上下に分割しました
ここで追加されたものは一時的なもので後で消します

Ctrl-F3 で左側に追加した画面が来るように移動します
byobufsc03

この状態で追加した画面を閉じれば最初の 2 つが上下分割になります
byobufsc04

ショートカットキーひとつでできたらいいのですけどね

セッション

byobu コマンドだけ打つと自動でセッションがあればそれを開いて なければ作ってくれるようです
自分でセッションを指定して作ることも出来て 複数のセッションがあると byobu コマンドを実行したときに選択画面になります

セッションリストを表示するときは

byobu list-session

を実行します
byobu へのオプションはバックエンドにそのまま流されるらしく tmux か screen どちらを使ってるかで変わります
このコマンドは tmux 用で screen だと別のコマンドになるはずです


私もあまりわかってない部分なのですが F6Shift-F6 でセッションをデタッチできます
簡単に言うと byobu の終了です
全部のタブと分割した画面で exit すれば終われるのですが 続きから実行したいなら F6 にする必要があります

違いは F6 がログアウトもして Shift-F6 はログアウトしない とヘルプには書かれていました
これを見る限りでは F6 だと byobu を終了してログアウトもするからセッションを続きから実行できなくて Shift-F6 では続きから実行出来るように思います
ですが F6 でデタッチしてもセッションを復元できるときもありました
試した限りだと タブや画面分割があるときはいつも復元できていて タブも分割もしてないときはたまに復元できてない みたいな動きです

理由はわからないのですが 復元したいなら念の為 Shift-F6 を使ったほうがいいんじゃないかなと思います

悪いところ

一見便利でずっと使っていればいいように思うのですが 良くない部分もあって必要なときだけにしています

byobu を使ってるときと使っていないときで ls のフォルダなどで微妙に色が違います
それにところどころコマンドの色がおかしいです

byobu-color01

b まで打っていて 残りは補完候補のように見えますが byobu まで入力しています
なのでこういう事も起きます

byobu-color-02

ググってみると .byobu/profile.tmux に
set -g default-terminal "screen-256color"
を指定すれば良いとあったので試してみましたが変わらずでした

エスケープシーケンス

byobu 内にエスケープシーケンスというものがあって そのキーを押した後に特定のキーを押すことで特別な操作ができます
デフォルトは Ctrl-A になっています

私はエディタに micro を使っているのですがこのショートカットキーが相性悪いです
micro は Windows のエディタと同じ操作感で操作できるエディタで Ctrl-A は全選択です
これが使えなくなるのが困りどころです

一応エスケープシーケンスのキーは変更可能になっています
ですが こういったツール内のショートカットキーとの競合が全く起きないキーを探すのは難しいです
使わなそうなキーに割り当ててみても 別のツールで被っていたりで 何かが使いづらくなっています
いっそ無効にしたかったのですが Shift-F12 でキーバインディングの有効無効を切り替えても エスケープシーケンスは有効のままでした

画面分割がマウス操作と相性が悪い

画面が 1 つだけなら何の問題もないのですが 画面分割が起きるとマウス操作との相性が悪くなります
画面分割が起きると 上スクロールで履歴を見ることができなくなります
仕組み上仕方ない気もしますが 普段はマウス操作がメインなのでけっこう辛いです

また 左右分割の場合はコピペにも影響します
マウスで選択すると分割を無視して 1 行が選択されます
右側だけをコピーしたいのに左側まで入ってきます

一応 byobu 側の機能で画面内スクロールや選択コピー機能はあります
ただ マウス操作に比べると手間が多いです

コピペ

F7 キーを押すと選択モードになります

byobuselect01

選択モードでは 右上に行数が出てきます
選択モード中は カーソルを現在のコマンドを入力する行だけでなく 上下左右キーで好きに画面内を移動できます
スペースキーで選択開始ができて 上下左右キーで移動後にエンターキーで確定できます
これでコピーされたのですが あくまで byobu の中でのコピーです
Windows から Linux サーバにつないでいるとして このコピーをしても Ctrl-V で別のソフトに貼り付けれるようにはなりません

貼り付けができるのは byobu 内なのでエディタを開いていったんそこに貼り付けて それを普段どおりコピペする必要があります
エディタじゃなくても cat にヒアドキュメントを書くなどでも 画面に表示できればいいです
表示させるときは画面分割なしの別タブで行います
そうしないとスクロールで上のほうが見えなかったり 左右分割でいらない部分がコピーされたりして一度コピーした意味がないですから

byobu 内のコピーしたものを貼り付けするには 「エスケープシーケンス+]」 です (同時押しじゃなくてエスケープシーケンスのあとに ] を押す)
選択モードについてですが 開始は F7 キー以外にも Alt-PgUpAlt-PgDown でも可能です
選択モード中は Alt なしで PgUpPgDown でページ単位でスクロールできます
選択モードの終了は q キーです

SecureShell で接続してると使いたくなる

msys から接続しているときは全然気にならなかったのですが Chrome アプリの SecureShell で接続してると つい Ctrl-WCtrl-F4 でタブを閉じてしまったり 入力が正しくできなくなって開き直したいということがあって 続きから実行できる byobu の便利さを感じています
まあ Ctrl-F4 は byobu の機能を使うためなので byobu を使っていないと押し間違いもないですけど


ところで急に SecureShell で q キーが入力できなくなって CapsLock 押した扱いになってます
逆に CapsLock だと反応なしです
リロードしても効果ないし SecureShell の不具合でしょうか
less から抜けれないんですけど

と思ってたら SecureShell どころかじゃなくて Chrome 全体やサクラエディタなど OS 全体みたい
IME 切り替えても効果なしで VirtualBox 上だとちゃんと動いてる
なんなんだろうこれ