可以打开一个new-window
工作目录,该工作目录设置为我当前所在的目录。如果使用的话,我正在使用zsh。
可以打开一个new-window
工作目录,该工作目录设置为我当前所在的目录。如果使用的话,我正在使用zsh。
Answers:
开始在TMUX 1.9 default-path
移除选项,所以你需要使用-c
带有选项new-window
,并split-window
(例如,通过重新绑定c
,"
以及%
绑定包括
-c '#{pane_current_path}'
)。有关详细信息,请参见此问题的其他一些答案。
相关功能已于2012年2月上旬登陆tmux SVN干线。在包含此代码的tmux构建中,调用的tmux键绑定new-window
将创建一个新窗口,该窗口的当前工作目录与当前窗格的活动进程相同(只要default-path
会话选项为空;默认情况下为默认)。split-window
当通过绑定调用命令创建的窗格时,也是如此。
这使用了特定于平台的特殊代码,因此目前仅支持某些操作系统:Darwin(OS X),FreeBSD,Linux,OpenBSD和Solaris。
在下一版的tmux(1.7?)中应该可用。
对于tmux 1.4,我通常只使用
tmux neww
在已经具有所需的当前工作目录的shell中。
但是,如果我预计需要创建多个具有相同当前工作目录的窗口(或者我希望能够使用通常的<prefix> c
键绑定启动它们),则default-path
可以通过以下方式设置会话选项
tmux set-option default-path "$PWD"
在已经具有所需的当前工作目录的外壳中(尽管您显然可以从任何目录中进行操作,而只需指定值即可)。
如果default-path
将设置为非空值,则将使用其值,而不是从命令行调用“继承”当前工作目录tmux neww
。
该TMUX常见问题有标题为一个条目“我如何打开在同一个目录作为当前窗口的新窗口?”,描述的另一种方法; 虽然有点令人费解。
当前(1.9a)Tmux手册页列出了-c start-directory
一些命令的可选参数,包括new-window
和split-window
。它还包含format变量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}"
prefix
- :
,然后键入source ~/.tmux.conf
tmux source-file .tmux.conf
。
是的,请使用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
命令。
我也回答了这个重复的问题。
使用最新版本的tmux(v1.8,但也可能在v1.7中):
tmux new-window -c "$PWD"
tmux split-window -v -c "$PWD"
$PWD
在tmux 1.9a中似乎不适合我。我不得不pane_current_path
按照上面的建议使用。
当我尝试将它们作为绑定(特别是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的版本。
tmux在1.8版中做到了这一点,但在1.9版中,此功能已被删除,以支持使用-c
flag。
可以解决此问题,但可以重新绑定,new-window
但是如果您要运行其他内容,它就会变得过于冗长:neww man tmux
除了键入内容neww -c "#{pane_current_path}" man tmux
,您还必须键入您很可能不想执行的操作。
有一个tmux的修改版(我是作者),向tmux添加了一种适当的脚本语言,以允许使用别名,在“模式”,变量,循环等中绑定多个命令...而且,它还可以恢复该行为:在当前目录中打开新的窗口和窗格。
可以从这里的资源中构建它:http : //ershov.github.io/tmux/
<prefix>c
以读取基础外壳程序实例(如果有)的工作目录,并设置default-path
执行之前的内容new-window
。还是对tmux要求不高:)