tmuxで「スナップバック」を実装する方法はありますか?

tmuxで「スナップバック」を実装する方法はありますか?

tmuxスクロールバックで新しいコマンド(文字と同じですが印刷可能な文字もすべて機能します)を入力し始めると、ロールバックが終了し、その文字がセッションに渡されるように設定できますか? PuTTYの「キーを押したときにスクロールをリセット」オプションや他の端末の同様のオプションと同じです。

答え1

答えを見つけました。おそらく最高答えが動作します。秘密は、copy-modeテーブルの変更されていないすべてのキーを1)コピーモードをキャンセルし、2)自分自身をセッションに送信することです。だからtmux.conf

bind-key -T copy-mode a send-keys -X cancel \; send-keys a
bind-key -T copy-mode b send-keys -X cancel \; send-keys b
bind-key -T copy-mode c send-keys -X cancel \; send-keys c
bind-key -T copy-mode d send-keys -X cancel \; send-keys d
bind-key -T copy-mode e send-keys -X cancel \; send-keys e
bind-key -T copy-mode f send-keys -X cancel \; send-keys f
bind-key -T copy-mode g send-keys -X cancel \; send-keys g
bind-key -T copy-mode h send-keys -X cancel \; send-keys h
bind-key -T copy-mode i send-keys -X cancel \; send-keys i
bind-key -T copy-mode j send-keys -X cancel \; send-keys j
bind-key -T copy-mode k send-keys -X cancel \; send-keys k
bind-key -T copy-mode l send-keys -X cancel \; send-keys l
bind-key -T copy-mode m send-keys -X cancel \; send-keys m
bind-key -T copy-mode n send-keys -X cancel \; send-keys n
bind-key -T copy-mode o send-keys -X cancel \; send-keys o
bind-key -T copy-mode p send-keys -X cancel \; send-keys p
bind-key -T copy-mode q send-keys -X cancel \; send-keys q
bind-key -T copy-mode r send-keys -X cancel \; send-keys r
bind-key -T copy-mode s send-keys -X cancel \; send-keys s
bind-key -T copy-mode t send-keys -X cancel \; send-keys t
bind-key -T copy-mode u send-keys -X cancel \; send-keys u
bind-key -T copy-mode v send-keys -X cancel \; send-keys v
bind-key -T copy-mode w send-keys -X cancel \; send-keys w
bind-key -T copy-mode x send-keys -X cancel \; send-keys x
bind-key -T copy-mode y send-keys -X cancel \; send-keys y
bind-key -T copy-mode z send-keys -X cancel \; send-keys z

など。大文字/小文字のバリアントを含む各キーを個別にマッピングする必要があります。

snapback.py次の行をすべて作成するためにPythonスクリプト()を作成しました。

import string

for c in string.printable:
    if ord(c) > 31:     # printable contains control chars we don't want
        c = repr(c).replace(r"\\", "\\").replace(r";", r"\;")
        print('bind-key -T copy-mode', c,
              'send-keys -X cancel \; send-keys', c.replace(";", r"\;"))

使用法:

python snapback.py >> ~/.tmux.conf

関連情報