
画面でキーTabとをバインドするにはどうすればいいですかShiftTab? 問題は、これらのキーストロークを指定するために画面コマンドに何を渡せばいいかわからないことですbind
。
ところで、私はGNU スクリーン: 領域間を移動するしかし、答えはそこにはありません。
以下のすべてがエラーで失敗します-X: bind: character, ^x, or (octal) \032 expected
:
screen -X bind "\033[Z" focus up
screen -X bind "^[[Z" focus up
screen -X bind "\t" focus up
screen -X bind \033[Z focus up
screen -X bind ^[[Z focus up
screen -X bind \t focus up
CtrlA:コマンドを入力するために押した場合も同様です。
答え1
bindkey
文字シーケンスを指定できる とは異なり、 ではbind
、 を使用することが唯一の方法です。bind -k CAP
ここで、CAP はtermcap
重要な機能です。
例えば、
bind -k ku focus up
Upは、送信された文字のシーケンスを にバインドしますfocus up
。バックタブの場合、次のようになります。
bind -k kB focus up
ncurses
残念ながら、何らかの理由で、動作しないようです。理由はわかりません。私の最初の解釈は間違っていました。termcapの同等のものを正しく処理していないことに関係しているようですkcbt
:
$ infocmp -1 | grep Z
cbt=\E[Z,
kcbt=\E[Z,
$ infocmp -1C | grep Z
:bt=\E[Z:\
(kcbt は kB に変換されません)。
以下に以下を追加すると~/.screenrc
:
termcapinfo * kr=\E[Z
bind -k kr focus up
つまり、私screen
がホストターミナル(*
)、F63(kr
)は を送信し\E[Z
、F63にバインドするfocus up
と動作します。ただし、Shift+Tab今 を押すと が送信されます。画面内 \EOC
、これは端末エミュレータが使用する文字シーケンスです画面を実装します (ホスト端末とは対照的に) 送信しますF63。
答え2
bindkey -k kB stuff ^[OZ
bind -k kB focus up
私の場合、問題はCtrl+ A- Shift+を押したときに挿入される文字列が+の後にTab来ることです。^[[Z
CtrlA
^[
コピー/スクロールバックモードに入る[
アボート- そして表示する
Z
つまり、標準の VT100 スタイルのエスケープ シーケンスの文字は、コピー/スクロールバック モードの文字シーケンスと競合します。そのため、バックタブ termcap 名のキー バインディングを追加して、+が押されたkB
ときに入力バッファーに挿入される文字列を変更しました。ShiftTab^[OB
screen のマニュアルページの「入力変換」セクションを参照してください。