Shr*_*rat 246 terminal-multiplexer tmux
是否可以打开一个new-window其工作目录设置为我当前所在的目录。如果重要的话,我正在使用zsh。
小智 341
当前 (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}"
Run Code Online (Sandbox Code Playgroud)
Chr*_*sen 177
开始在TMUX 1.9default-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
Run Code Online (Sandbox Code Playgroud)
在已经具有所需当前工作目录的 shell 中。
但是,如果我预计需要使用相同的当前工作目录创建许多窗口(或者我希望能够使用通常的 <prefix>c键绑定启动它们),那么我default-path通过设置会话选项
tmux set-option default-path "$PWD"
Run Code Online (Sandbox Code Playgroud)
在已经具有所需当前工作目录的 shell 中(尽管您显然可以从任何目录执行此操作,而只需指定值)。
如果default-path设置为非空值,则将使用其值,而不是从 的命令行调用“继承”当前工作目录tmux neww。
该TMUX常见问题有标题为一个条目:“我怎么能在同一目录为当前窗口打开一个新窗口?” 描述了另一种方法;虽然有点复杂。
mmo*_*oya 57
是的,使用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}"
Run Code Online (Sandbox Code Playgroud)
的default-path路径设定为除去从上游代码和TMUX作者在建议提交使用消息要么-c "#{pane_current_path}"或-c "$PWD在new-window和split-window命令。
我也在这个重复的问题中回答了。
mis*_*lav 10
使用最新版本的 tmux(v1.8,但也可能在 v1.7 中):
tmux new-window -c "$PWD"
Run Code Online (Sandbox Code Playgroud)
小智 5
当我尝试将它们作为绑定(特别是)时,其他答案对我不起作用tmux split-window -c。但我已经制定了自己的解决方案,我已经使用了一年多,该解决方案适用于新窗口和拆分:
~/.bashrc:
PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'
Run Code Online (Sandbox Code Playgroud)
~/.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"
Run Code Online (Sandbox Code Playgroud)
至少可以与 $(tmux -V) 1.8 一起使用。请参阅此处注释掉的行,了解适用于没有 show-environment 命令的旧 tmux 的版本。
| 归档时间: |
|
| 查看次数: |
126264 次 |
| 最近记录: |