使用 Bash + iTerm2,如何命名选项卡?

qaz*_*wsx 194 terminal iterm iterm2

在 iTerm2 (Build 1.0.0.20120203) 中,我通常会打开几个选项卡,每个选项卡都有拆分窗格,并且是关于一个特定的工作主题,例如修订控制、编码、管理文件、mysql 终端工作。我通常需要在工作流程中的 5 个或更多选项卡之间切换。有时很难通过查看屏幕内容来记住或分辨哪个是哪个。我想以某种方式命名选项卡,所以我可以通过快速浏览来快速判断哪个是哪个。这可能吗?

小智 231

由于您在 mac 上使用 iterm2,因此另一个选择是您可以直接点击CmdI,输入内容,然后点击ESC

终端解决方案比这快一点,但只是想让你知道。

  • @Stewie 在首选项 -> 配置文件 -> 终端中,取消选中“允许终端报告窗口标题”。 (16认同)
  • 这会持续一秒钟,直到我在已重命名的选项卡上发出返回。 (11认同)
  • @SteveBennett 这不是“主题”(实际上该术语是“个人资料”)本身;CMD+I 命令是“编辑当前会话...”(在“查看”菜单下),因此它只是更改该选项卡的配置文件实例。点击 Escape 只会关闭窗口,这是必需的,因为该窗口上没有“保存”按钮。 (6认同)
  • 如果您打开多个窗格怎么办?您是否必须重命名每个选项才能完全命名选项卡本身? (4认同)
  • 它是未经检查的。它仍然重命名标题。 (3认同)
  • @Stewie,请勾选“允许终端报告窗口标题”,这样标题就不会被shell重命名 (2认同)
  • 这似乎无法将名称保存在 iTerm 2 3.0.12 的配置文件中。对我有用的是`iTerm > Preferences > Appearance > Window & Tab Titles > Show profile name`。 (2认同)

Jas*_*ram 130

我发现了以下功能,放在 my~/.bashrc中很有帮助:

function title {
    echo -ne "\033]0;"$*"\007"
}
Run Code Online (Sandbox Code Playgroud)

然后我可以从我的 bash 提示符中调用它,如下所示:

> title I want a pony!
Run Code Online (Sandbox Code Playgroud)

我的标签会相应地命名。

  • 很有帮助。我想要一匹小马;我得到了一个! (4认同)
  • 那些认为它不起作用的人是因为你的命令提示符立即将其更改回来。尝试“titledog && sleep 5”,你会发现它有效。请注意@schpet 的答案来解决这个问题 (4认同)
  • +1 - 我将我的添加到 /etc/profile 只是因为那是我的别名所在......完成后不要忘记获取文件。注意:这也适用于终端。 (2认同)
  • 对于 2021 年阅读本文的任何人,我还需要检查 iTerm -> 首选项 -> 配置文件 -> 常规 -> 终端中的应用程序可能会更改标题。 (v 3.4.10) (2认同)

sch*_*pet 52

运行此命令以设置选项卡或窗口的标题:

export PROMPT_COMMAND='echo -ne "\033]0;YOUR NAME HERE\007"'
Run Code Online (Sandbox Code Playgroud)

我已将以下内容添加到 my~/.bash_profile以始终列出相对于我的主目录的当前目录:

export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
Run Code Online (Sandbox Code Playgroud)

当您的扩展坞中有 100 个最小化的终端时很有用

给 mac 世界的提示


Jon*_*ice 25

我使用与上述类似的解决方案已经有一段时间了,但我使用了足够多的选项卡,我还希望它们进行颜色编码,以便于视觉参考。因此,我创建了tabset,这是一个实用程序,可根据我在每个选项卡中所做的工作类型来设置选项卡标题、徽章和颜色。

例子

它需要node,但现在这是一个普遍安装的平台。安装:

npm install -g iterm2-tab-set
Run Code Online (Sandbox Code Playgroud)


小智 17

将此功能添加到您的~/.bash_profile文件中,它应该可以工作。

function title ()
{
    TITLE=$*;
    export PROMPT_COMMAND='echo -ne "\033]0;$TITLE\007"'
}
Run Code Online (Sandbox Code Playgroud)


小智 7

我喜欢这个:

#setup terminal tab title
function title {
    if [ "$1" ]
    then
        unset PROMPT_COMMAND
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
    fi
}
title
Run Code Online (Sandbox Code Playgroud)

它将让您在自定义名称和 CWD 的默认名称之间切换选项卡的名称。

title -> 你的标签标题将是 ~/YOUR_CWD/

title hey there -> 你的标签标题将是 hey there


Mic*_*ael 6

我真的很喜欢taylorstine 的回答,但它破坏了 iTerm2依赖于变量的shell 集成PROMPT_COMMAND。您可以修改 Taylor 的代码以通过将__bp_precmd_invoke_cmdback添加到PROMPT_COMMAND您修补它的任何时间来纠正此问题:

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
    if [ "$1" ]
    then
        export PROMPT_COMMAND='__bp_precmd_invoke_cmd'
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/\~}\007";__bp_precmd_invoke_cmd'
    fi
}
title
Run Code Online (Sandbox Code Playgroud)


yat*_*sek 6

我正在寻找适用于 vanilla iTerm2 的解决方案。我发现的一个非常有效的方法是添加键盘快捷键来执行此选项(可以通过双击选项卡或从菜单中选择来使用Window \xe2\x86\x92 Edit TabTitle

\n

为此:

\n
    \n
  • 打开Preferences- Cmd+,或菜单iTerm2 \xe2\x86\x92 Preferences
  • \n
  • 转到Keys子菜单并单击+底部
  • \n
  • 记录您首选的击键(例如Super+Ctrl+Shift+e)并选择“操作”Select Menu Item
  • \n
  • Edit Tab Title从可用职位列表中选择
  • \n
  • 瞧!
  • \n
\n


小智 5

我喜欢迈克尔的回答。

但如果.iterm2_shell_integration.bash不存在怎么办?

这是我的看法:

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
  if [ "$1" ] ; then
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='iterm2_preexec_invoke_cmd' \
      || unset PROMPT_COMMAND
    echo -ne "\033]0;${*}\007"
  else
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007";iterm2_preexec_invoke_cmd' \
      || export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
  fi
}
title
Run Code Online (Sandbox Code Playgroud)