現在、キーのバインディングをデフォルトにリセットする直接的な方法はありません。デフォルトのバインディング(in key_bindings_init()
)の初期化は、tmuxサーバーが最初に(in server_start()
)起動したときに1回行われ、単一のキーをリセットするメカニズムはありません。
以前以来、コンフィギュレーションファイルから削除されたことカスタムバインディングによって上書きされたことデフォルトのバインディングを再確立するために、あなたの設定ファイルをソースの行為をしたいご希望のシナリオでは、あなたが考案された方法は、(ただし、残念ながら冗長)合理的です:unbind-key -a
、次に、すべての「デフォルト」バインディングを再確立し、カスタムバインディングを確立します(一部は「デフォルト」バインディングをオーバーライドする場合があります)。
サーバーの現在のバインディングは、list-keys
コマンド*で抽出できます。これは提案された.tmux.reset.conf
ファイルを生成/維持するのに役立ちますが、現在のバインディングではなくデフォルトのバインディングを抽出する方法が必要です。
*の出力は、いくつかの状況があるlist-keys
セミコロンのための結合はそのセミコロンとして解釈されることを防ぐためにバックスラッシュでエスケープ必要があります。現在は直接使用できないtmuxは、コマンドセパレータ、および内部の二重引用符を使用し、引数持っていたすべてのバインディングシングル引用符(デフォルトのバインディングはどれもこのようなものではありません)は、二重引用符内で二重引用符として出力されます。
デフォルトのバインディングを取得するには、list-keys
出力をキャプチャできるように、最小限の構成(つまり、カスタムバインディングなし)の一時サーバーが必要です。実行できるtmuxサーバーの数に制限はありませんが、それぞれが異なるソケットパス名を使用する必要があります。tmuxのオプションは、ソケット名を(指定するために使用することができますまたは完全なソケットパス名それでは、と話(または起動する)という名前のソケットに新しいサーバー。、あなたがこれを使用します。-L
-S
$TMPDIR/tmux-$UID
temp
tmux -L temp …
を使用しないようにするには.tmux.conf
、を使用-f
して読み取りを指示します/dev/null
(常に空の特別なファイル)。
tmux -f /dev/null -L temp …
注:この/etc/tmux.conf
ようなファイルが存在する場合、これはの処理を妨げません。この「システム構成ファイル」へのパスはハードコードされており、それをバイパスするオプションはありません(コードにパッチを適用する以外)。
通常、new-session
実際にサーバーを起動するためのコマンドが必要ですが、セッションは必要ありません。初期化されたサーバーが照会するだけです。このstart-server
コマンドは、セッションを作成せずにサーバーを起動します。
tmux -f /dev/null -L temp start-server …
ここで、「クエリ」コマンドを追加するだけです(list-keys
この場合)。
tmux -f /dev/null -L temp start-server \; list-keys
注:セミコロンをエスケープまたは引用符で囲む必要があります。これは、シェルがtmuxコマンドセパレーターになりたいため、シェルがシェルコマンドセパレーターとして扱わないようにするためです。
維持するセッションがないため、サーバーはlist-keys
コマンドの実行が終了すると自動的に終了します。
そのため、このようなコマンドを使用して.tmux.reset.conf
、.tmux.conf
ファイルを一時的に削除することを心配することなく(デフォルトのバインディングのみを表示するため)、既存のサーバーをシャットダウンすることなく、大部分を生成できます。
場合はrun-shell
、コマンドは同期だったあなたは(あなたが、その後で処理することを一時ファイルにキャプチャし、あなたの設定ファイルにこのような呼び出しを埋め込むことができsource-file
)の代わりに、静的なファイル(あなたを持ちます.tmux.reset.conf
)。これにより、tmuxの現在のバージョンのデフォルトバインディングを常に使用できます(デフォルトバインディングはときどき変更されます)。残念ながら、run-shell
コマンドの完了は現在、後続のコマンドに対して非同期です(コマンドの後に来るrun-shell
コマンドは、通常、生成されたプロセスrun-shell
が終了する前に実行されます)。