~/.tmux.conf でこれを行う方法はありますか?
1 に答える
他のすべてが正しく構成されている場合は、これを に入れるだけで簡単に実行できます.tmux.conf
。
set-option -g prefix Home
注: を手動で「ソース」しない限り.tmux.conf
、ファイルへの変更はtmux サーバーが再起動されたときにのみ有効になります。すべてのペイン、ウィンドウをきれいに終了する (つまり、すべてのセッションを閉じてサーバーを終了させる) か、または を使用しtmux kill-server
て、新しいセッションを開始します。
これは、ターミナル エミュレータが、 tmuxセッションに接続したときに有効な値khome
の terminfo データベース エントリのフィールドに一致するエスケープ シーケンスを送信している場合にのみ機能します(つまり、 tmux の「外側」)。TERM
TERM
ホーム用に生成されたエスケープ シーケンス
Home キー (および改行) を入力することで、端末エミュレータから送信されたエスケープ シーケンスを確認できます (シーケンスが表示されたら、 -でcatをcat -v
中止できます)。一般的な応答は、またはです。ControlC^[[1~
^[OH
Home に期待されるエスケープ シーケンス
環境変数は、TERM
terminfo ベースのプログラム ( tmuxなど) に、端末エミュレーターが (おそらく) 理解して生成するエスケープ シーケンスを伝えます。ホーム キーによって生成されたエスケープ シーケンスは、khome
フィールドに格納されます。tputまたはinfocmpを使用して、フィールドの値を抽出できます (TERM
オーバーライド端末宣言が指定されていない限り、どちらも現在の値を使用します)。
tput khome | cat -v ; echo
infocmp -1 | grep -F khome
生成された/予想される不一致の修正
khome
端末エミュレーターによって生成されたエスケープ シーケンスが宣言された値のエントリと一致しないTERM
場合、問題を解決するために実行できることがいくつかあります。
- ターミナル エミュレータを再構成します。
これには、別のプログラムの使用、別のエミュレーションの選択、またはホーム キーを押したときに送信されるシーケンスの (再) 定義が含まれる場合があります。 TERM
端末エミュレーターが送信して理解するものによりよく一致する新しい値を選択してください。- 端末エミュレーションに一致するように terminfo データベース エントリを調整します。infocmp
を 使用して既存の terminfo エントリを抽出し、ticを使用して変更したエントリをコンパイルできます。 - terminfo データベース エントリのランタイム コピーを調整するようにtmuxに指示します。
tmuxterminal-overrides
は、さまざまな値の個々の terminfo フィールドをオーバーライドするために使用できるオプションを提供しTERM
ます。
たとえば、端末エミュレーターがホームのシーケンスを送信しないが、それを構成でき、端末エミュレーターの terminfo エントリにフィールドTERM
がないkhome
場合、端末エミュレーターに ESC を送信し、値[
1
~
に使用するように指示できます (は、TERM 値に適切に一致するパターンです)。termname:khome=\033[1~
terminal-overrides
termname
例: .tmux.conf:
set-option -g terminal-overrides "xterm-color:khome=\033[1~"
terminfo エントリのtmuxのランタイム コピーtmux server-info
を検査するために使用できます。
注: 上記 (prefix
変更あり) のように、この変更を有効にする最も簡単な方法は、tmuxサーバーを再起動することです。