同じ初期コマンドを使用して、tmuxウィンドウを新しいtmuxウィンドウに分割します。

同じ初期コマンドを使用して、tmuxウィンドウを新しいtmuxウィンドウに分割します。

tmux特定のコマンドで開いたウィンドウです。メインウィンドウの代わりに同じコマンドを実行する新しいウィンドウにウィンドウを分割できますか?

要点は、元のコマンドを覚えて再入力する必要がないことです。

答え1

#{pane_start_command}現在のウィンドウの起動に使用されるコマンドにアクセスする方法です。この機能はv1.7(2012年10月)から利用可能です。

bind-key S run-shell "tmux split-window \"#{pane_start_command}\""
問題の解決策は#{pane_start_command}.(tmuxバージョン> = 1.9(02/2014))を使用してください。

バージョン1.7> = X <1.9の場合、ファイルには次のものがあります~/tmux.conf

bind-key S run-shell "tmux split-window \"$(tmux display-message -p '#{pane_start_command}')\""
  • display-messageコマンド抽出を置き換えました#{pane_start_command}
  • コマンドは引数として提供されますtmux split-window

pane_start_commandウィンドウがコマンド文字列なしで起動され、何もない場合は空の文字列になります。ただし、空のコマンド文字列が与えられた場合は、通常のログインシェルが起動されるのでdefault-command大丈夫です。split-window

答え2

探しているコマンドは次のとおりですsplit-windowman tmux

ウィンドウ分割[-dhvP] [-cスタートディレクトリ] [-lサイズ| -pパーセント] [-tターゲットウィンドウ] [シェルコマンド] [-F形式](エイリアス:Splitw)ターゲットウィンドウを
分割して新しいウィンドウを作成します。 hは水平に分割され、-vaは垂直に分割されます。指定しない場合、-v とみなされます。 -lおよび-pオプションは、それぞれ行(縦分割の場合)、セル(横分割の場合)、またはパーセントで新しいウィンドウのサイズを指定します。他のすべてのオプションはnew-windowコマンドと同じ意味を持ちます。

Ctrlb:コマンドモードに入り、プロンプトで次のように入力して現在のウィンドウで使用できます。

splitw -v -p 50 'your command'

現在のウィンドウが分割されます。V縦に半分に減らす(50ercent)そこからコマンドを実行してください。

このコマンドを頻繁に使用する場合は、いつでもキーシーケンスにバインドできます。

bind '~' split-window -v -p 50 'htop'

答え3

これがtmuxバージョン間で変わるかどうかはわかりませんが、私には(tmux 3.0a)起動コマンドなしでウィンドウで実行すると、許可された答えが完全に空のウィンドウを開くのに対して新しいシェルではないことがわかりました。これは私にとって効果的です。

bind C run-shell "CMD=\"#{pane_start_command}\" ; tmux split-window -v \${CMD:+ -c \"#{pane_current_path}\" \"\$CMD\"}"

これは以下を利用します。代替値置換引数が空の場合、引数は完全に削除されます(このアプローチに答えたJohn Kugelmanに感謝します。)。

添付-c \"#{pane_current_path}\"コマンドは現在のウィンドウと同じディレクトリでコマンドを実行します。これは私のワークフローにとって重要です。コマンドを実行するウィンドウだけでなく、すべての新しいウィンドウにスニペットを表示するには、スニペットを囲みます\${...}

関連情報