如何将iterm2选项卡标题设置为正在运行的tmux会话名称?

时间:2012-08-18 12:58:41

标签: macos shell zsh tmux iterm

我知道tmux display-message -p'#S'会显示当前的tmux会话名称,但我不知道如何将当前的tmux会话名称设置为iterm2标签名称?

这将真正帮助我区分我正在同时运行的各种tmux会话并立即跳转到正确的选项卡。

4 个答案:

答案 0 :(得分:7)

将这些添加到〜/ .tmux.conf:

set-option -g set-titles on
set-option -g set-titles-string "#{session_name} - #{host}"

答案 1 :(得分:1)

将此贴在~/.zshrc

set_terminal_tab_title() {
  print -Pn "\e]1;$1:q\a"
}

indicate_tmux_session_in_terminal() {
  set_terminal_tab_title "$(tmux display-message -p '#S')"
}

precmd_functions=($precmd_functions indicate_tmux_session_in_terminal)

precmd_functions是一个数组,在zsh中包含在显示提示之前要调用的函数列表。如果您将自己的函数添加到列表中,则只要显示提示就会调用它,这使它成为定期更新终端选项卡标题的好地方。

答案 2 :(得分:1)

Bash Version将Hello World显示为标题:

echo -ne "\033]0; Hello World \007"

如果你希望每次bash打印你的提示时刷新标题:

export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}: ${PWD/#$HOME/~}\007"'

http://hints.macworld.com/article.php?story=20031015173932306

上找到它

答案 3 :(得分:0)

我的工作流程通常以窗格为中心,我不使用tmux,所以我使用了@mislav答案的略微变化:

set_terminal_tab_title() {
  print -Pn "\e]1;$TABTITLE:q\a"
}

precmd_functions=($precmd_functions set_terminal_tab_title)

我把它扔进我的zshrc;然后,在每个窗格中,我export TABTITLE='FOO'。这样,当我切换窗格时,我会在标签上找到我想要的标题。