在iTerm2(内部版本1.0.0.20120203)中,我通常打开几个选项卡,每个选项卡都具有拆分窗格,并且与某个特定的工作主题有关,例如,版本控制,编码,管理文件,mysql终端工作。我通常需要在工作流程中的5个或更多选项卡之间切换。有时很难通过查看屏幕内容来记住或分辨出哪个。我想以某种方式命名标签,因此我可以快速浏览一下,从而快速分辨出哪个标签。这可能吗?
在iTerm2(内部版本1.0.0.20120203)中,我通常打开几个选项卡,每个选项卡都具有拆分窗格,并且与某个特定的工作主题有关,例如,版本控制,编码,管理文件,mysql终端工作。我通常需要在工作流程中的5个或更多选项卡之间切换。有时很难通过查看屏幕内容来记住或分辨出哪个。我想以某种方式命名标签,因此我可以快速浏览一下,从而快速分辨出哪个标签。这可能吗?
Answers:
由于您在Mac上使用iterm2,因此另一个选择是您可以点击CmdI,键入内容并点击ESC。
终端解决方案比这快一点,但是只是想让您知道。
我发现以下功能对我~/.bashrc
有帮助:
function title {
echo -ne "\033]0;"$*"\007"
}
然后,可以从bash提示符中调用它,如下所示:
> title I want a pony!
我的标签也相应地带有标题。
bash_aliases
,并将其加载到.profile
(if [ -f ${HOME}/.bash_aliases ]; then . ${HOME}/.bash_aliases fi
)中,但随后title dog
没有将制表符标题转换为“ dog”
title dog && sleep 5
,您会发现它有效。请注意@schpet给出的答案,以解决这一问题
运行以下命令来设置选项卡或窗口的标题:
export PROMPT_COMMAND='echo -ne "\033]0;YOUR NAME HERE\007"'
我将以下内容添加到我的~/.bash_profile
列表中,以始终列出相对于我的主目录的当前目录:
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
当您的扩展坞中有100个最小化的终端时很有用
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/$HOME/\~}\007"'
我使用了与上述类似的解决方案已有一段时间,但我使用了足够多的标签,因此我也希望它们使用颜色进行编码,以便于视觉参考。因此,我启动了tabset,该实用程序可根据我在每个标签中所做的工作类型来设置标签标题,徽章和颜色。
它需要node,但是现在这是一个普遍安装的平台。安装:
npm install -g iterm2-tab-set
but that is now a commonly installed platform
哈哈哈。哈...哈......,等等,你是认真的吗?
我喜欢这一个:
#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
它将允许您在自定义名称和CWD的默认值之间切换选项卡的名称。
title
->您的标签标题将是 ~/YOUR_CWD/
title hey there
->您的标签标题将是 hey there
我真的很喜欢taylorstine的答案,但是它破坏了iTerm2 依赖于变量的shell集成PROMPT_COMMAND
。您可以修改Taylor的代码来纠正此问题,方法是__bp_precmd_invoke_cmd
在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
我喜欢迈克尔的回答。
但是如果.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
iterm2_preexec_invoke_cmd
已成为__bp_precmd_invoke_cmd
自动配置文件切换 iTerm2可以使用其了解的有关当前路径,主机名和用户名的信息来更改配置文件。例如,当连接到不同的主机时,窗口的背景色或终端的字符编码可能会更改。
徽章 您可以在终端的右上角放置一个徽章,以显示有关当前会话的信息。它可以显示您的用户名,主机名,甚至是自定义数据,例如当前的git分支。
所以结果可能像这样:
k,所有这些别名和功能。更简单的解决方案(如果您是root用户),请将其粘贴到终端中:
TARGET=/usr/bin/title
sudo tee "$TARGET" <<'EOF'
#!/usr/bin/env bash
echo -ne "\033]0;$*\007"
EOF
sudo chmod 755 "$TARGET"
或者只是在路径或全局路径中的某个位置创建文件调用标题,然后在EOF之间粘贴两行。
title
in 的脚本,因此无需记住这一点/usr/bin
。