new-window
并将其工作目录设置为我当前所在的目录。如果使用的话,我正在使用zsh。#1 楼
从tmux 1.9开始,删除了default-path
选项,因此您需要将-c
选项与new-window
和split-window
结合使用(例如,通过重新绑定c
,"
和%
绑定以包括-c '#{pane_current_path}'
)。有关详细信息,请参见此问题的其他一些答案。相关功能已于2012年2月上旬登陆tmux SVN干线。在包含此代码的tmux构建中,tmux密钥绑定invoke
new-window
将创建一个新窗口,该窗口的当前工作目录与当前窗格的活动进程相同(只要default-path
会话选项为空;默认情况下为默认)。通过绑定调用split-window
命令创建的窗格时也是如此。它使用特定于平台的代码,因此目前仅支持某些操作系统:Darwin(OS X ),FreeBSD,Linux,OpenBSD和Solaris。
在下一版tmux(1.7?)中应该可用。
对于tmux 1.4,我通常只在已经具有所需当前工作目录的外壳中使用
tmux neww
。但是,如果我预计需要创建许多具有相同当前工作目录的窗口(或者我希望能够使用通常的
c
键绑定启动它们),然后通过tmux set-option default-path "$PWD"
设置
default-path
会话选项在已经具有所需当前工作目录的外壳程序中(尽管您显然可以从任何目录执行此操作,而只需指定值即可)。
如果
default-path
设置为非空值,将使用其值代替“ inh”从tmux neww
的命令行调用中删除当前工作目录。tmux FAQ中有一个标题为“如何在与当前窗口相同的目录中打开新窗口?”的条目。描述了另一种方法;虽然有点令人费解。
#2 楼
当前的(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}"
评论
这对tmux 1.9不起作用吗?我不能做它预期的事情。
–埃里克·加里森(Erik Garrison)
2015年11月17日14:57
bind-key -r输入新窗口-c“#{pane_current_path}”,适用于tmux 2.1
–马斯洛
16年1月7日在10:12
在OSX的tmux 2.3中工作。不要忘记停止/终止所有现有会话以查看已应用这些绑定。
– jmgarnier
17 Mar 24 '17 at 10:19
@jmgarnier或重新提供配置文件:prefix- :,然后键入source〜/ .tmux.conf
– ijoseph
17年5月5日在21:44
@jmgarnier或只是tmux源文件.tmux.conf。
– phil294
17-10-2在21:35
#3 楼
是的,请使用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
路径设置已从上游代码中删除,因此建议使用tmux作者在-c "#{pane_current_path}"
和-c "$PWD
命令中使用new-window
或split-window
提交消息。我也在这个重复的问题中回答了。
#4 楼
使用最新版本的tmux(v1.8,但也可能在v1.7中):tmux new-window -c "$PWD"
评论
这似乎也适用于拆分窗口,例如tmux分割窗口-v -c“ $ PWD”
–user7089
13年5月5日在17:53
$ PWD在tmux 1.9a中似乎不适合我。我不得不按照上面的建议使用pane_current_path。
–jordelver
14-10-16在13:39
#5 楼
当我尝试将它们作为绑定(特别是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命令的较旧tmuxes的版本。
#6 楼
tmux在1.8版中做到了这一点,但在1.9版中,此功能已被删除,转而使用-c
标志。可以解决此问题,但重新绑定
new-window
,但是如果您要运行其他内容,它将变得过于冗长:您不必输入neww man tmux
,而不必键入neww -c "#{pane_current_path}" man tmux
,而您很可能不想这样做。有一个tmux的模块(我是作者)向其中添加适当的脚本语言tmux允许使用别名,在“模式”,变量,循环等中绑定多个命令。
而且,它还带回了这种行为:在当前目录中打开了新的窗口和窗格。 >
可以从此处的资源构建:http://ershov.github.io/tmux/
评论
有没有一种方法可以映射
–恐怖的沙拉特
2011年4月27日在5:34
另一方面,甚至有可能读取底层shell的工作目录吗?我很想在状态栏中显示它。
–恐怖的沙拉特
2011年4月27日在5:34
没有可移植的方法来提取另一个进程的cwd(尽管在某些平台上是可能的(例如,Linux上的/ proc / PID / cwd))。在tmux FAQ的条目中可能有部分解决方案(它在打印提示时让shell记录其cwd,然后在记录的目录中绑定启动新shell的键)。
–克里斯·约翰森(Chris Johnsen)
2011年4月27日在7:14
好的,就我所知,这有点超出范围,并且感觉不太可靠。某事告诉我,如果没有这些,我可能会更好。
–恐怖的沙拉特
2011年4月27日在8:57
@paradroid:通过绑定完成的所有操作(默认情况下)将使用tmux服务器的cwd或default-path会话选项的值(如果已设置)。 tmux常见问题解答包含一个条目,该条目描述了一种绑定键的方法,该键将启动一个新窗口并与在当前窗口中运行的Shell的cwd绑定(“如何在与当前窗口相同的目录中打开一个新窗口?”) ,但方法相当复杂。拆分窗口和新会话(而不是neww)可能也可以这样做。
–克里斯·约翰森(Chris Johnsen)
2011年8月23日在1:53