iTerm2 Shell 集成和 Oh My Zsh 冲突
iTerm2 Shell Integration and Oh My Zsh Conflicts
我最近重新安装了 iTerm2,现在 运行 在设置 iTerm 的 Shell 集成后遇到了一个有趣的问题。
打开一个新终端 window 后,一切似乎都是正确的,显示了来自 Oh My ZSH 的正确 "agnoster" 主题:
如果我发出 clear
,现在我的终端 window 看起来像这样:
我可以通过再次采购 ~/.zshrc
将事情恢复到原始状态,但我真的很好奇根本问题以及是否有任何方法可以解决它。
我曾尝试在 iTerm 的设置中隐藏标记,但这只会导致终端空白。
在之前的安装中(在我擦除这个 Mac 之前),我有 Oh My ZSH 和 Shell Integration 都在进行,虽然它有时看起来有点不稳定,但它似乎仍然无论清除终端或发出任何其他命令,都保留 Oh My ZSH 主题。
有没有人对此有任何想法?我一遍又一遍地检查了 iTerm 设置,但似乎找不到任何相关的东西。
我刚刚在 iTerm 2(Build 2.9.20160313)中安装了 Shell Integration,遇到了完全相同的问题。
我解决它的方法是在第 3 行的 export ITERM_SHELL_INTEGRATION_INSTALLED=Yes
之后向 ~/.iterm2_shell_integration.zsh
添加一行:
ITERM2_PRECMD_PS1="$PS1"
因此,上述文件的头部是这样的:
if [[ -o login ]]; then
if [ "$TERM" != "screen" -a "$ITERM_SHELL_INTEGRATION_INSTALLED" = "" ]; then
export ITERM_SHELL_INTEGRATION_INSTALLED=Yes
## BEGIN EDIT
ITERM2_PRECMD_PS1="$PS1"
## END EDIT
# Indicates start of command output. Runs just before command executes.
iterm2_before_cmd_executes() {
printf "3]133;C;[=10=]7"
}
# ...
这可能是一个错误,因为(正如您可以从同一文件中的评论中看到的那样)脚本应该在登录时保存您的 $PS1
,但它没有。
迟到的答案,但这对我有用。
iTerm2 Shell 集成页面让您下载安装脚本并将其通过管道传输到 bash。
相反,将其下载到本地并进行修改,使其知道您正在使用 ZSH。
首先,下载脚本
wget https://iterm2.com/misc/install_shell_integration.sh
然后,不要让脚本确定 shell,只需将其定义为 "zsh"
# comment out this line
# SHELL=$(echo "${SHELL}" | tr / "\n" | tail -1)
# replace it with this line
SHELL="zsh"
下一步,使安装脚本可执行,然后运行它
chmod +x install_shell_integration.sh
./install_shell_integration.sh
之后应该正确安装集成。
备注
如果不需要,请删除 Bash 集成。
rm ~/.iterm2_shell_integration.bash
对于仍然遇到此问题的任何人,iterm 的配置文件设置中现在有一个选项允许您禁用这些“标记”(在“标记”部分 on this page 下有详细说明)
- 打开项目首选项
- Select“配置文件”
- Select个人资料
- Select“终端”选项卡
- 取消选中“Shell 集成 > 显示标记指示符”复选框
Screenshot of the setting within iterm preferences
我最近重新安装了 iTerm2,现在 运行 在设置 iTerm 的 Shell 集成后遇到了一个有趣的问题。
打开一个新终端 window 后,一切似乎都是正确的,显示了来自 Oh My ZSH 的正确 "agnoster" 主题:
如果我发出 clear
,现在我的终端 window 看起来像这样:
我可以通过再次采购 ~/.zshrc
将事情恢复到原始状态,但我真的很好奇根本问题以及是否有任何方法可以解决它。
我曾尝试在 iTerm 的设置中隐藏标记,但这只会导致终端空白。
在之前的安装中(在我擦除这个 Mac 之前),我有 Oh My ZSH 和 Shell Integration 都在进行,虽然它有时看起来有点不稳定,但它似乎仍然无论清除终端或发出任何其他命令,都保留 Oh My ZSH 主题。
有没有人对此有任何想法?我一遍又一遍地检查了 iTerm 设置,但似乎找不到任何相关的东西。
我刚刚在 iTerm 2(Build 2.9.20160313)中安装了 Shell Integration,遇到了完全相同的问题。
我解决它的方法是在第 3 行的 export ITERM_SHELL_INTEGRATION_INSTALLED=Yes
之后向 ~/.iterm2_shell_integration.zsh
添加一行:
ITERM2_PRECMD_PS1="$PS1"
因此,上述文件的头部是这样的:
if [[ -o login ]]; then
if [ "$TERM" != "screen" -a "$ITERM_SHELL_INTEGRATION_INSTALLED" = "" ]; then
export ITERM_SHELL_INTEGRATION_INSTALLED=Yes
## BEGIN EDIT
ITERM2_PRECMD_PS1="$PS1"
## END EDIT
# Indicates start of command output. Runs just before command executes.
iterm2_before_cmd_executes() {
printf "3]133;C;[=10=]7"
}
# ...
这可能是一个错误,因为(正如您可以从同一文件中的评论中看到的那样)脚本应该在登录时保存您的 $PS1
,但它没有。
迟到的答案,但这对我有用。
iTerm2 Shell 集成页面让您下载安装脚本并将其通过管道传输到 bash。
相反,将其下载到本地并进行修改,使其知道您正在使用 ZSH。
首先,下载脚本
wget https://iterm2.com/misc/install_shell_integration.sh
然后,不要让脚本确定 shell,只需将其定义为 "zsh"
# comment out this line
# SHELL=$(echo "${SHELL}" | tr / "\n" | tail -1)
# replace it with this line
SHELL="zsh"
下一步,使安装脚本可执行,然后运行它
chmod +x install_shell_integration.sh
./install_shell_integration.sh
之后应该正确安装集成。
备注 如果不需要,请删除 Bash 集成。
rm ~/.iterm2_shell_integration.bash
对于仍然遇到此问题的任何人,iterm 的配置文件设置中现在有一个选项允许您禁用这些“标记”(在“标记”部分 on this page 下有详细说明)
- 打开项目首选项
- Select“配置文件”
- Select个人资料
- Select“终端”选项卡
- 取消选中“Shell 集成 > 显示标记指示符”复选框
Screenshot of the setting within iterm preferences