new-window
を開いて、その作業ディレクトリを現在使用しているディレクトリに設定することはできます。重要な場合はzshを使用しています。
tmux1.9以降、default-path
オプションは削除されたため、-c
オプションをnew-window
とともに使用する必要があります、およびsplit-window
(たとえば、c
、"
、および%
バインディングを再バインドして、-c '#{pane_current_path}'
)。詳細については、この質問の他の回答のいくつかを参照してください。
2012年2月上旬にtmuxSVNトランクに導入された関連機能。tmuxこのコードを含むビルド、new-window
を呼び出すtmuxキーバインディングは、現在と同じ現在の作業ディレクトリで新しいウィンドウを作成しますペインのアクティブなプロセス(default-path
セッションオプションが空である限り、デフォルトではこれです)。 split-window
コマンドによって作成されたペインがバインディングを介して呼び出された場合も同様です。
これは特別なプラットフォーム固有のコードを使用するため、現時点でサポートされているOSはDarwin(OS X)、FreeBSD、Linux、OpenBSD、Solarisのみです。
これはtmuxの次のリリース(1.7?)で利用可能になるはずです。
tmux1.4では、通常、
tmux neww
すでに目的の現在の作業ディレクトリがあるシェルで。
ただし、同じ現在の作業ディレクトリで多くのウィンドウを作成する必要があると予想する場合(または通常の<prefix> c
キーバインディングでウィンドウを起動できるようにしたい場合)、default-path
セッションオプション
tmux set-option default-path "$PWD"
目的の現在の作業ディレクトリが既にあるシェルで(ただし、明らかに任意のディレクトリから実行でき、代わりに値を指定することもできます)。
default-path
が空でない値に設定されている場合、その値は、tmux neww
のコマンドライン呼び出しから現在の作業ディレクトリを「継承」する代わりに使用されます。
tmuxFAQ には、「現在のウィンドウと同じディレクトリに新しいウィンドウを開くにはどうすればよいですか?」というタイトルのエントリがあります。それは別のアプローチを説明しています。少し複雑ですが。
現在の(1.9a)Tmuxのマニュアルページには、-c start-directory
およびnew-window
を含む一部のコマンドのオプションのsplit-window
パラメータがリストされています。また、pane_current_path
を参照するフォーマット変数Current path if available
も含まれています。
これらを組み合わせることで、現在の作業ディレクトリで新しいウィンドウを開くことができますnew-window -c "#{pane_current_path}"
現在のパスにスペースが含まれている場合は、引用符が必要です。
現在のペインを垂直に分割したい場合は、split-window -c "#{pane_current_path}"
または、水平分割の場合split-window -h -c "#{pane_current_path}"
キーバインディングがデフォルトで現在の作業ディレクトリで新しいスプリットとウィンドウを開くようにするには、.tmux.conf
に以下を追加します。引用符で囲まれた"
は、Tmuxに文字列を開始するのではなく、 " キー。
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
はい、_new-window -c "#{pane_current_path}"
_を使用します。以下を_~/.tmux.conf
_に追加して、永続化することができます(デフォルトのキーバインディングを想定)。
_bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
_
_default-path
_パス設定は 削除済み であり、_-c "#{pane_current_path}"
_または_-c "$PWD
_の_new-window
_および_split-window
_コマンド。
この質問にも回答しました 重複した質問 。
Tmuxの最近のバージョン(v1.8、おそらくv1.7でも):
tmux new-window -c "$PWD"
他の回答をバインディングとして配置しようとすると、うまくいきません(特にtmux split-window -c
)。しかし、私は1年以上使用している独自のソリューションを作成しました。これは、新しいウィンドウとスプリットの両方で機能します。
~/.bashrc
:
PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'
~/.tmux.conf
:
unbind-key c
bind-key c run-Shell 'tmux new-window "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $Shell"'
bind-key C new-window
bind-key - run-Shell 'tmux split-window -v "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $Shell"'
bind-key | run-Shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $Shell"
少なくとも、$(tmux -V)1.8で動作します。 show-environmentコマンドを持たない古いtmuxで動作するバージョンについては、コメントアウトされた行 here を参照してください。
tmuxはバージョン1.8でこれを行いましたが、1.9では-c
フラグを使用するためにこの機能が削除されました。
これは解決できますが、new-window
を再バインドしますが、他の何かを実行したい場合は冗長になります。neww man tmux
を入力する代わりに、neww -c "#{pane_current_path}" man tmux
を入力する必要があります。したくない。
Tmuxにmodがあり(私は作者です)、tmuxに適切なスクリプト言語を追加して、エイリアスの使用、「モード」での複数のコマンドのバインド、変数、ループなどを可能にします。また、その動作を元に戻します:新しいウィンドウとペインが現在のディレクトリで開かれます。
ここからソースからビルドできます: http://ershov.github.io/tmux/