Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 7 cygwin+;Windows7上的tmux-为什么赢了';t tmux是否使用当前路径?_Windows 7_Cygwin_Tmux - Fatal编程技术网

Windows 7 cygwin+;Windows7上的tmux-为什么赢了';t tmux是否使用当前路径?

Windows 7 cygwin+;Windows7上的tmux-为什么赢了';t tmux是否使用当前路径?,windows-7,cygwin,tmux,Windows 7,Cygwin,Tmux,我在linux系统和MacOSX上使用过tmux,没有问题。我知道从1.9版开始(根据tmux-V,我有1.9a),您需要按照tmux分割窗口-c“{pane\u current\u path}”的思路做一些事情。但这不管用。似乎什么都不管用 我能给出的最好的“提示”是,-c参数似乎以某种形式被识别,因为如果我给它一个我知道不存在的显式路径,我会得到一个关于无效路径的错误。但是,给它一个显式的路径并没有任何作用(我想使用窗格\u current\u path可能有问题) 这里可能有两个问题,因为

我在linux系统和MacOSX上使用过tmux,没有问题。我知道从1.9版开始(根据
tmux-V
,我有1.9a),您需要按照
tmux分割窗口-c“{pane\u current\u path}”
的思路做一些事情。但这不管用。似乎什么都不管用

我能给出的最好的“提示”是,
-c
参数似乎以某种形式被识别,因为如果我给它一个我知道不存在的显式路径,我会得到一个关于无效路径的错误。但是,给它一个显式的路径并没有任何作用(我想使用
窗格\u current\u path
可能有问题)

这里可能有两个问题,因为tmux不会在当前文件夹中启动,我相信这是默认行为


有人知道发生了什么吗?这是预期的行为吗?我是不是错过了某个库?

在您的
.tmux.conf
中有以下内容:

set-environment -g CHERE_INVOKING 1
然后
tmux分割窗口-c“{pane\u current\u path}”
将我放在
/
,但是
tmux分割窗口-c$PWD
起作用

使用
设置环境
$PWD
找到的文件对我不起作用

相反,我在登录脚本中设置了环境变量(
~/.bash\u profile
用于bash,
~/.zprofile
用于zsh):

另外,
$PWD
对我不起作用,但
{pane\u current\u 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}"

软件:tmux 2.0、Cygwin 1.7.35、zsh 5.0.6、Windows 10

{pane\u current\u path}
总是把我留在
/
“$PWD”
总是把我留在
~
。我卸载了ubuntu软件包,并从中进行编译,现在它与
{pane\u current\u path}完美结合

该解决方案(而不是上面使用的CHERE_调用)将保留您的符号链接路径:

# .bashrc
# set pwd for tmux
function set_tmux_pwd() {
    [ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD"
    return 0
}
function my_cd() {
    \cd $1
    set_tmux_pwd
}
set_tmux_pwd
alias cd=my_cd


它适用于cygwin 3.1.4和tmux 2.6

我不确定否决票是关于什么……我唯一的假设(因为没有直接反馈)这是来自一个不熟悉cygwin和/或tmux的人,所以我不知道为什么会出现这种情况。如果维护当前路径对其他人来说是现成的,那当然很高兴知道。刚刚在cygwin上安装了tmux,看到了同样的问题。你找到解决方案了吗?@nfarrar-kraiz用解决方案回答,OP未能确认和接受。这对我不起作用。当运行命令
tmux show environment
时,CHERE_调用应该出现吗?对我起作用。谢谢!工作得很有魅力,谢谢!希望我能在一小时前在查看所有其他该死的slashdot答案之前找到这个答案。这
CHERE_调用
s放弃了我的工作生活。我在cygwin中使用了
tmux 2.6
,这对我来说终于是新的一天的开始。谢谢!!!谢谢。解决了我在cygwin中的tmux 2.6问题。你还做了什么更改吗?对我来说不起作用(与大师核实)不,我所要做的就是从master安装。你安装了所有的依赖项吗?是的。
tmux-V
说是2.4。
# .bashrc
# set pwd for tmux
function set_tmux_pwd() {
    [ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD"
    return 0
}
function my_cd() {
    \cd $1
    set_tmux_pwd
}
set_tmux_pwd
alias cd=my_cd
# .tmux.conf
# this support symbolic link
bind c run-shell 'tmux new-window "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind '"' run-shell 'tmux split-window -v "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind '%' run-shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'