How to create a new window on the current directory in tmux?
The current (1.9a) Tmux man page lists an optional -c start-directory
parameter for some commands, including new-window
and split-window
.
It also contains the format variable pane_current_path
, which refers to the
Current path if available
.
By combining these, we can open a new window with the current working directory using
new-window -c "#{pane_current_path}"
The quotation are needed in case the current path contains spaces.
If you want to split the current pane vertically, use
split-window -c "#{pane_current_path}"
or, for a horizontal split
split-window -h -c "#{pane_current_path}"
To make the key bindings open new splits and windows with the current working directory by default, add the following to your .tmux.conf
. The "
with surrounding quotes is to tell Tmux it shouldn't start a string but rather bind the " key.
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
Starting in tmux 1.9 the default-path
option was removed, so you need to use the -c
option with new-window
, and split-window
(e.g. by rebinding the c
, "
, and %
bindings to include
-c '#{pane_current_path}'
). See some of the other answers to this question for details.
A relevant feature landed in the tmux SVN trunk in early February 2012. In tmux builds that include this code, tmux key bindings that invoke new-window
will create new a window with the same current working directory as the current pane’s active processes (as long as the default-path
session option is empty; it is by default). The same is true for the pane created by the split-window
command when it is invoked via a binding.
This uses special platform-specific code, so only certain OSes are supported at this time: Darwin (OS X), FreeBSD, Linux, OpenBSD, and Solaris.
This should be available in the next release of tmux (1.7?).
With tmux 1.4, I usually just use
tmux neww
in a shell that already has the desired current working directory.
If, however, I anticipate needing to create many windows with the same current working directory (or I want to be able to start them with the usual <prefix>c
key binding), then I set the default-path
session option via
tmux set-option default-path "$PWD"
in a shell that already has the desired current working directory (though you could obviously do it from any directory and just specify the value instead).
If default-path
is set to a non-empty value, its value will be used instead of “inheriting” the current working directory from command-line invocations of tmux neww
.
The tmux FAQ has an entry titled “How can I open a new window in the same directory as the current window?” that describes another approach; it is a bit convoluted though.
Yes, use new-window -c "#{pane_current_path}"
. You can add the following to your ~/.tmux.conf
to make it persistent (assumming default keybindings):
bind c new-window -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
The default-path
path setting was removed from upstream code and tmux author recommended in that commit message using either -c "#{pane_current_path}"
or -c "$PWD
in the new-window
and split-window
commands.
I also answered in this duplicate question.