我的 tmux 2.1 状态栏有问题。正如手册所解释的,我会在 ~/.tmux.conf 中写入:
set -g status-right "#(/bin/pwd) %R %d/%m/%g"
set -g status-interval 1
我启动tmux后状态栏是/home/conformist。但如果我更改 cwd(如 cd /)——状态栏仍然是 $HOME。
如果我将 conf 更改为:
set -g status-right "#{pane_current_path} %R %d/%m/%g"
我想在状态栏 $HOME 像 ~ 一样查看,但不能这样做,因为 pwd 不会改变(并且 pwd | perl -pne s-$HOME-~- 也不起作用)。
答案1
工作环境:
操作系统
- 操作系统 10.14.5
终端
- 欢欣鼓舞 0.3.3 -https://github.com/jwilm/alacrtty
- iTerm2 3.2.9 -https://iterm2.com/
- 苹果终端2.9.5
多路复用器
- 多路复用器2.9a
状态右侧字段示例
~/.tmux.config
要调用所提供示例中的外部 bash 脚本,该文件位于此处:~/.tmux_path.sh
~/.tmux.config
set -g status-interval 1
set -g status-right-length 150
set -g status-right "#(~/.tmux_path.sh #{pane_current_path}) %Y-%m-%d %H:%M:%S"
示例 bash 脚本读取 #{pane_current_path) arg。 basename
截断起始路径并仅显示当前路径。如果用作窗口 ID,这很好。注意:这是假设$HOME = /home/user
人们可能需要进行调整-f-1,4-
以匹配所需的结果。
~/.tmux_path.sh
#!/bin/sh
printf '\033%s\007' $(echo "$1" | awk '{print "~"$1}' | cut -d/ -f-1,4-)
使脚本可执行
chmod +x ~/.tmux_path.sh
窗口命名示例
- 注意:使用
~/.tmux_path.sh
与上面相同的内容
~/.tmux.conf
set -g status-interval 1
set -g window-status-current-format "[#[fg=white] #(~/.tmux_path.sh #{pane_current_path})]"
set -g window-status-format "#[fg=black] #(~/.tmux_path.sh #{pane_current_path})"
答案2
呼唤/bin/pwd
是行不通的,因为程序是由同一个进程运行的(它是不是你的外壳)。如果您使用的是bash
,则可以修改提示以发送转义序列,以tmux
使用示例所示的转义序列更改窗口名称:
printf '\033kWINDOW_NAME\033\\'
下面是一个单独的 shell 脚本来演示转义序列:
#!/bin/sh
printf '\033k%s\033\\' $(pwd)
它与 xterm 标题使用的转义序列不同,但您可以应用中的建议Bash 提示符 HOWTO以同样的方式。
进一步阅读: