禁止窗口在 tmux 中重命名自己

禁止窗口在 tmux 中重命名自己

我已经在 OS X 系统上安装了 tmux,并使用 oh-my-zsh 提供的 zsh。

我通常会使用相当多的 tmux 窗口来进行大量的 ssh 会话,并且我喜欢用我正在使用的主机来命名这些窗口,这样我就可以更容易地弄清楚哪个窗口包含什么内容。

我尝试将类似的配置行添加set-window-option -g automatic-rename offset-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 已加载。

我想到的最后一点是:主机名只能由您登录的主机设置。因此,请确保所有这些机器的配置都是

相关内容