web-dev-qa-db-ja.com

Tmux:Ctrl-`のバインド

TmuxのCtrl-`をselect-paneにバインドしたいのですが。

私が試した:bind -n C-` select-pane -t:。+これは私に:unknown key C-`

私も試しました:bind -n'C-` 'select-pane -t:。+これで同じエラーが発生します。

次に、単純な `:bind -n` select-pane -t:。+を試してみましたが、正常に機能しました(ただし、C-`ではなく`をバインドしました。

最も紛らわしいことに、私は次のことを試みました:bind -n `-C select-pane -t:。+これは驚くほどうまくいきました(最初にバッククォートを押してからctrlを押す必要がありました)。 tmuxが気に入らないのはCtrl-`内で何ですか?

4
Jon Q

tmuxは、このロジックを使用して ctrlkey-string.cの修飾子(バッククォートはコード96):

    /* Convert the standard control keys. */                               
    if (key < KEYC_BASE && (modifiers & KEYC_CTRL) && !strchr(other, key)) {
            if (key >= 97 && key <= 122)
                    key -= 96;
            else if (key >= 64 && key <= 95)
                    key -= 64;
            else if (key == 32)
                    key = 0;
            else if (key == 63)
                    key = KEYC_BSPACE;
            else
                    return (KEYC_NONE);
            modifiers &= ~KEYC_CTRL;
    }

一部のアプリケーションでは、64〜126の範囲全体が有効であると見なされる場合があります。 ctrl、tmuxは、バックティック、中括弧、垂直バー、チルダを除外します。考えられる理由は、変更されていないキーがシェルスクリプトでよく使用されるため、キーバインディングにはあまり役立たないことです。

一方、ctrl-@は同じ予想される解釈を持ち、代わりにそれを使用できます。

6
Thomas Dickey

エスケープシーケンスをチェックするためにtmux内でcatを使用するアドバイスをどこかで見つけました。

  1. tmuxを実行します
  2. catを実行します
  3. キーを押すC-`

私の端末には^@

だから私が置いた設定に

set -g prefix ^@roxtermで私のために働いた

1
spinus