6

~/.tmux.conf でこれを行う方法はありますか?

4

1 に答える 1

15

他のすべてが正しく構成されている場合は、これを に入れるだけで簡単に実行できます.tmux.conf

set-option -g prefix Home

注: を手動で「ソース」しない限り.tmux.conf、ファイルへの変更はtmux サーバーが再起動されたときにのみ有効になります。すべてのペイン、ウィンドウをきれいに終了する (つまり、すべてのセッションを閉じてサーバーを終了させる) か、または を使用しtmux kill-serverて、新しいセッションを開始します。

これは、ターミナル エミュレータが、 tmuxセッションに接続したときに有効な値khomeの terminfo データベース エントリのフィールドに一致するエスケープ シーケンスを送信している場合にのみ機能します(つまり、 tmux の外側」)。TERMTERM

ホーム用に生成されたエスケープ シーケンス

Home キー (および改行) を入力することで、端末エミュレータから送信されたエスケープ シーケンスを確認できます (シーケンスが表示されたら、 -でcatcat -v中止できます)。一般的な応答は、またはです。ControlC^[[1~^[OH

Home に期待されるエスケープ シーケンス

環境変数は、TERMterminfo ベースのプログラム ( tmuxなど) に、端末エミュレーターが (おそらく) 理解して生成するエスケープ シーケンスを伝えます。ホーム キーによって生成されたエスケープ シーケンスは、khomeフィールドに格納されます。tputまたはinfocmpを使用して、フィールドの値を抽出できます (TERMオーバーライド端末宣言が指定されていない限り、どちらも現在の値を使用します)。

tput khome | cat -v ; echo
infocmp -1 | grep -F khome

生成された/予想される不一致の修正

khome端末エミュレーターによって生成されたエスケープ シーケンスが宣言された値のエントリと一致しないTERM場合、問題を解決するために実行できることがいくつかあります。

  1. ターミナル エミュレータを再構成します。
    これには、別のプログラムの使用、別のエミュレーションの選択、またはホーム キーを押したときに送信されるシーケンスの (再) 定義が含まれる場合があります。
  2. TERM端末エミュレーターが送信して理解するものによりよく一致する新しい値を選択してください。
  3. 端末エミュレーションに一致するように terminfo データベース エントリを調整します。infocmp
    を 使用して既存の terminfo エントリを抽出し、ticを使用して変更したエントリをコンパイルできます。
  4. terminfo データベース エントリのランタイム コピーを調整するようにtmuxに指示します。
    tmuxterminal-overridesは、さまざまな値の個々の terminfo フィールドをオーバーライドするために使用できるオプションを提供しTERMます。

たとえば、端末エミュレーターがホームのシーケンスを送信しないが、それを構成でき、端末エミュレーターの terminfo エントリにフィールドTERMがないkhome場合、端末エミュレーターに ESC を送信し、値[ 1 ~に使用するように指示できます (は、TERM 値に適切に一致するパターンです)。termname:khome=\033[1~terminal-overridestermname

例: .tmux.conf:

set-option -g terminal-overrides "xterm-color:khome=\033[1~"

terminfo エントリのtmuxのランタイム コピーtmux server-infoを検査するために使用できます。

注: 上記 (prefix変更あり) のように、この変更を有効にする最も簡単な方法は、tmuxサーバーを再起動することです。

于 2011-11-02T04:30:49.453 に答える