tmuxは、コマンドラインとその設定ファイル(.tmux.conf)の間で異なる動作をします。
コマンドライン:
bash$ tmux new \; split-window -h \;
設定ファイル(.tmux.conf)(その後、コマンドラインに「tmux」のみを入力)
new
split-window -h
コマンドラインバージョンでは、起動時にウィンドウがよく表示され、セッションは1つだけ作成されます。ただし、プロファイルバージョンは異なる動作をします。
- 1つのセッションではなく、セッション名が「0」と「1」の2つのセッションを作成します。
- セッション「0」には、コマンドラインバージョンで見たのと同じウィンドウがあります。
- セッション「1」には全ウィンドウがあります。
- セッション「1」で停止します。
だからプロフィールバージョンではついに画面の「1」セッションに到達するようになりました。 「終了」を実行してセッション0を追加すると、コマンドラインバージョンと同じ結果で「0」セッションに移動します。
または、構成ファイルに分割行のみが含まれている場合:
split-window -h
その後、「tmux」と入力すると、起動時にエラーメッセージが表示されます。
.tmux.conf:1: no current target
そして、分割ウィンドウはありません(分割ウィンドウのコマンドが失敗するので、見てわかるように、設定の最初の行に現在ターゲットがないと文句を言います)。
明らかに、コマンドラインバージョンは私が望むか必要なものです。
設定ファイルのバージョンに問題がありますか?
答え1
違いは、tmux
編集後に手動で入力したコマンドにあります.tmux.conf
。
tmux サーバーと各 tmux クライアントが別々のプロセスであることを認識して覚えておくと、tmux に関連する多くの問題を理解しやすくなります。場合によっては、クライアントはサーバーを起動します。.tmux.conf
クライアントではなくサーバーに適用されます。
tmux
引数なしでtmux new-session
akaのように動作しますtmux new
。必要に応じてtmuxサーバーを起動します。 tmux サーバーが起動すると、.tmux.conf
tmux クライアントからの要求を処理する前に解析されます。
したがって、実行中のサーバーがない場合は、tmux
tmuxサーバーを作成して次を実行します。
new-session # because of .tmux.conf
split-window -h # because of .tmux.conf
new-session # because this is the request from your client
クライアントが作成された最後のセッションに接続します。new-session
、暗黙的に要求することです。
クライアントがすでに作成されたセッションに接続できるようにするには、tmux attach-session
akatmux attach
またはを使用してくださいtmux a
。 tmuxサーバーがまだ存在しない場合は、それを作成しようとします。attach-session
生成するセッションは、クライアントの要求が最終的に処理されたときに「作成」されたと見なされます。.tmux.conf
これは文書:
サーバーが起動していない場合は、サーバー
attach-session
を起動しようとします。設定ファイルにセッションが作成されないと失敗します。
問題がある場合は、ファイルから作成されたセッションに(単に追加するのではなく)追加する必要.tmux.conf
があります。 tmux サーバーが既に存在する場合は再確認されず、既存のセッション (存在する場合) に接続しようとします。tmux a
tmux
.tmux.conf
tmux a
私を含む一部のユーザーは既存のセッションに戻ることを好むので、シェルでまたはを使用しますtmux new-session -A
。tmux a || tmux
このコマンドは.tmux.conf
。
新しく作成されたセッションを実行するには、split-window -h
次のフックを使用できます。
set-hook -g session-created 'split-window -h'
(これはシェルのtmuxコマンドですtmux set-hook …
。)