我已经在 OS X 系统上安装了 tmux,并使用 oh-my-zsh 提供的 zsh。
我通常会使用相当多的 tmux 窗口来进行大量的 ssh 会话,并且我喜欢用我正在使用的主机来命名这些窗口,这样我就可以更容易地弄清楚哪个窗口包含什么内容。
我尝试将类似的配置行添加set-window-option -g automatic-rename off
到set-option -g allow-rename off
我的 ~/.tmux.conf 中,但是如果我启动一个新的 tmux 会话,重命名窗口并cd
进入不同的目录,tmux 会很乐意再次重命名窗口以匹配当前工作目录。
我怎样才能命名窗口而不让它们自动改变?
答案1
我遇到了类似的问题,但经过byobu-screen
一番研究,结果证明 哦我的天啊特征。
这个问题已在哦我的天啊问题页
简而言之,我必须取消文件DISABLE_AUTO_TITLE="true"
中的注释行~/.zshrc
。
根据版本哦我的天啊,您可能需要添加export DISABLE_AUTO_TITLE="true"
。
答案2
我知道这不能直接回答你的问题,但可能会帮助你获得期望的行为——而且对于评论来说太长了
我认为你应该治本而不是缓解症状……我的意思是:在你的 shell 配置中的某个地方(可能是在你激活的 oh-my-zsh 插件之一中),每次你更改当前目录时,窗口标题都会被设置。最有可能是在precmd()
orchpwd()
函数中。因此,首先检查
$ which precmd
$ which chpwd
并尝试在你的 zsh rc 文件中找到源。
一个解决方法是覆盖这些函数(使用 tmux自动重命名选项已关闭,允许重命名在):
$ chpwd() { }
$ precmd() {
if [[ "$TERM" = "screen" ]] && [[ -n "$TMUX" ]]; then
print -Pn "\033k%m\033\\"
fi
}
评论:
- 我使用检查您是否处于 tmux 会话中那个答案
- 每次重新绘制提示之前,都会通过打印转义序列来更改窗口标题
print -P
使用与提示中相同的扩展(参见扩展提示序列在man zshmisc
) 中,因此%m
扩展为直到第一个点的主机名。
确保将此代码插入到您的~/.zshrc
文件中后oh-my-zsh 已加载。
我想到的最后一点是:主机名只能由您登录的主机设置。因此,请确保所有这些机器的配置都是