可以打开一个new-window
,其工作目录设置为我当前所在的目录。我正在使用桀骜,如果重要的话。
答案1
当前 (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}"
答案2
开始于多路复用器1.9 该default-path
选项已被删除,因此您需要将该-c
选项与new-window
, 和 一起使用split-window
(例如,通过重新绑定c
, "
, 和%
绑定以包含
-c '#{pane_current_path}'
)。有关详细信息,请参阅此问题的其他一些答案。
相关功能已登陆多路复用器2012 年 2 月上旬的 SVN 主干。多路复用器包含此代码的构建,多路复用器调用的键绑定new-window
将创建一个新窗口,其当前工作目录与当前窗格的活动进程相同(只要default-path
会话选项为空;默认情况下)。split-window
当通过绑定调用该命令时,该命令创建的窗格也是如此。
它使用特殊的特定于平台的代码,因此目前仅支持某些操作系统:Darwin (OS X)、FreeBSD、Linux、OpenBSD 和 Solaris。
这应该会在下一版本中提供多路复用器(1.7?)。
和多路复用器1.4,我一般就用
tmux neww
在已经具有所需当前工作目录的 shell 中。
但是,如果我预计需要创建许多具有相同当前工作目录的窗口(或者我希望能够使用通常的 <prefix>c
键绑定来启动它们),那么我可以default-path
通过以下方式设置会话选项
tmux set-option default-path "$PWD"
在已经具有所需当前工作目录的 shell 中(尽管您显然可以从任何目录执行此操作,只需指定值即可)。
如果default-path
设置为非空值,则将使用其值,而不是从命令行调用中“继承”当前工作目录tmux neww
。
这多路复用器常问问题有一个标题为“如何在与当前窗口相同的目录中打开新窗口?”的条目描述了另一种方法;虽然有点复杂。
答案3
使用new-window -c "#{pane_current_path}"
。
您可以将以下内容添加到您的文件中~/.tmux.conf
以使其持久化(假设默认键绑定):
bind c new-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind '"' split-window -v -c "#{pane_current_path}"
设定default-path
是已删除从 1.9(2014 年 2 月发布)开始。在更改中,作者建议在和命令中使用-c "#{pane_current_path}"
or 。-c "$PWD
new-window
split-window
也在这个回答了重复的问题。
答案4
tmux split-window -c
当我尝试将它们作为绑定(特别是)时,其他答案对我不起作用。但我已经制定了自己的解决方案,我已经使用了一年多,该解决方案适用于新窗口和拆分:
~/.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 的版本。