tmux

tmux-zoom: pane拡大

tmuxのexampleディレクトリをみたら、すごく便利なスクリプトが転がってて、でも動かなくてちょっといじった。

1つはFreeBSDにはbashが入ってないので/bin/shで動くように書き換えたのと、もうひとつはバグなのかtmuxで仕様変更があったのか、paneの指定で.1となっているところを.0に書き換える必要があった。

このスクリプトをパスの通ったところにおいて、~/.tmux.confに bind C-k run "tmux-zoom.sh" を追加するだけ。(当然キーバインドはお好みで)

使い方はズームしたいpaneで C-b C-k すると新しいwindowができて、そこにpaneが移動する。もう一度で C-b C-k で新しくできたwindowが消えて元に戻る。

このへんレイアウトまわりはscreenの方が自由がきいて便利だったなぁ。

koie

tmuxをつかいはじめて一週間

emacs23になってからMewでスパムが表示されると頻繁に画面制御がおかしくなって端末をresetしないといけない状態がずっと続いていたが、tmuxにしたらなかなか耐えてくれるようなのでおもいきって乗り換えてみた。左右分割したときにスクロールが速いというのも気にいっているところ。

screexをtmuxに移植してtmuxnというをつくった。screenはセッション毎にサーバがあるけどtmuxは複数のセッションを1つのサーバでまかなうので、tmuxn用のセッションを特別につくるようにしたり、サーバを起動したときの環境変数を中のシェルまでもってくるのでtmuxサーバを起動するときに環境変数をクリアしたり、tmuxがattachするときにクライアントの環境変数をセッションにコピーする機能を殺したり、こまごました違いがあって安定して動くまで時間がかかった。

tmux自体の動きでいちばんこまったのはC-hがDELに変換されてしまうというもの。ふだんバックスペースCtrl+Hで入力していて、それにあわせてemacsも設定してあってDELはC-dにしてある(bobcat仕様)なので、これはなんとかする必要があった。

ググっているとstty eraseを変更するとよいというブログがみつかり、さっそくソースコード調査。

  • sttyコマンドのソースコードでeraseを検索するとVERASEというシンボルで参照されるようだ。
  • tmuxのソースコードでVERASEを検索するとtty-keys.cに、とってもあやしいコードを発見。
 /*
  * Check for backspace key using termios VERASE - the terminfo
  * kbs entry is extremely unreliable, so cannot be safely
  * used. termios should have a better idea.
  */
 bspace = tty->tio.c_cc[VERASE];
 if (bspace != _POSIX_VDISABLE && key == bspace)
         key = KEYC_BSPACE;

svn annotateで調べるとr1417ではいったようだ:

------------------------------------------------------------------------
r1417 | tcunha | 2009-07-29 07:37:02 +0900 (Wed, 29 Jul 2009) | 7 lines

Sync OpenBSD patchset 184:

Detect backspace by looking at termios VERASE and translate it into \177
(which matches screen's behaviour if not its termcap/terminfo entry). The
terminfo kbs cap is often wrong or missing so it can't be used, and just
assuming \177 may be wrong.

------------------------------------------------------------------------

ソースコードのコメントをみてもコミットログをみても、どういう意図があるのかわからん。

とりあえずFreeBSDにはeraseのほかにerase2というのもあるので

stty erase ^?
stty erase2 ^h

という設定で逃げられたが、Linuxにはerase2はないようなのでそっち方面の人はどうすんだろう。

そのほかtmuxで気になること:

  • set-environment -uのつかいかたがわからない
  • paneをリサイズしたときに行を再配置してくれない。これはscreenだと折り返し位置を画面幅にあわせてくれるがtmuxはなにもしてくれない。
  • screenだと長い行を折り返して表示するかどうかを切り替えられる。横に長いログがでるときにwrapしない表示は便利だったんだが。
  • 別々のwindowにあるpaneを1つのwindowに集約して表示する方法がない。screenだとwindow分割してそこに別のwindowをもってくるようなこと。

screenとtmuxではモデルがちがって特にwindowの意味がちがっているので分かるまでかなり時間がかかった。

SCREEN

        1  n (screen -xのときn>1)
session ---- client
  |m          |1
  |           |
  |n          |1
window ----- layout (これが1画面)
  |1   n   1
  |
  |1
 pty

TMUX

        1  n
session ---- client
  |m (m>1になるのはlink-windowしたときだけ)
  |
  |n
window (これが1画面。誰から見てもおなじレイアウト)
  |1
  |
  |n
 pane (これが分割されたあとの区画に対応)
  |1
  |
  |1
 pty

(2012-02-23)

FreeBSD:/usr/ports/sysutils/tmux/files/ extra-patch-tty-keys.cにC-hをDELに変えるコードをはずすパッチがはいってた。backspaceとDeleteをどうするか謎は深いなぁ。

screen/tmuxのエスケープキーをどうするか問題

いちど2chでもりあがったよなぁとおもって探したらすぐにみつかった。

記事検索
月別アーカイブ
アクセスカウンター

    タグ絞り込み検索
    ギャラリー
    • 今日の練習 2022-06-26
    • 今日の練習 2022-06-26
    • 今日の練習 2022-06-26
    • 鼻栓: speedo NOSECLIP SD97A07 GY グレイ
    • 鼻栓: speedo NOSECLIP SD97A07 GY グレイ
    • 鼻栓: speedo NOSECLIP SD97A07 GY グレイ
    Amazon
    楽天市場
    adby google
    LINE読者登録QRコード
    LINE読者登録QRコード
    • ライブドアブログ