iTerm2 Shell集成和我的Zsh冲突

时间:2016-04-09 15:38:09

标签: shell iterm2 oh-my-zsh

我最近重新安装了iTerm2,现在在设置iTerm的Shell集成后遇到了一个有趣的问题。

打开一个新的终端窗口,一切看起来都很正确,显示出正确的" agnoster"来自Oh My ZSH的主题:

working

如果我发出clear,现在我的终端窗口如下所示:

not working

我可以通过再次寻找~/.zshrc来恢复原状状态,但我对根本问题非常好奇,是否有任何方法可以修复它。

我尝试在iTerm的设置中隐藏标记,但这只会导致空白终端。

在之前的安装中(在我擦除这台Mac之前),我有哦我的ZSH和Shell集合都在进行,虽然它看起来有点不稳定但它似乎仍然保持Oh My ZSH主题而不管清除终端或发出任何其他命令。

有没有人对此有任何想法?我一遍又一遍地检查了iTerm设置,但似乎无法找到任何相关内容。

3 个答案:

答案 0 :(得分:11)

我刚刚在iTerm 2(Build 2.9.20160313)中安装了Shell集成,并遇到了完全相同的问题。

我解决问题的方法是在第{3行} ~/.iterm2_shell_integration.zsh之后的export ITERM_SHELL_INTEGRATION_INSTALLED=Yes添加一行:

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 "\033]133;C;\007"
    }

    # ...

这可能是一个错误,因为(正如您可以从同一文件中的注释中看到的)脚本应该在登录时保存您的$PS1,但事实并非如此。

答案 1 :(得分:11)

迟到的答案,但这对我有用。

iTerm2 Shell Integrations页面允许您下载安装脚本并将其传输到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

答案 2 :(得分:0)

对于仍然遇到此问题的任何人,iterm的配置文件设置中现在都有一个选项,可让您禁用这些“标记”(在“ {marks”部分on this page下进行了详细介绍))

  1. 开放iterm偏好
  2. 选择“个人资料”
  3. 选择个人资料
  4. 选择“终端”标签
  5. 取消选中“外壳集成>显示标记指示器”复选框

Screenshot of the setting within iterm preferences