在 zsh shell 中,我遇到以下问题。当我在命令提示符下按下命令后,它会在第二行重复,并且也有一个不合格的字符。
我在 Guake 中运行 zsh。这是我的.zshrc
:
术语=“screen-256color”
# install zsh antigen
source /usr/share/zsh-antigen/antigen.zsh
# Load the oh-my-zsh's library.
antigen use oh-my-zsh
# Bundles from the default repo (robbyrussell's oh-my-zsh).
antigen bundle debian
antigen bundle autojump
antigen bundle cp
antigen bundle colorize
antigen bundle command-not-found
antigen bundle git
antigen bundle zsh-users/zsh-syntax-highlighting
# Set Home for VirtualEnvWrapper
export WORKON_HOME="$HOME/.config/virtualenv"
antigen bundle virtualenvwrapper
antigen bundle tmux
antigen bundle littleq0903/gcloud-zsh-completion
# Tell antigen that you're done.
antigen apply
# using system powerline
source /usr/share/powerline/bindings/zsh/powerline.zsh
export MANPAGER="/bin/sh -c \"col -b | vim -c 'set ft=man ts=8 nomod nolist noma' -\""
我开始逐行删除以检查哪一个导致了问题。我相信它是“抗原使用 oh-my-zsh”。
另一个痛点:我尝试了很多tmux.conf
,但就是没用,唯一有效的是这个和tmux=tmux -2
。
答案1
当某些东西在不应该的情况下将内容打印到标准输出时,就会出现此类问题,因此通常会弄乱 Zsh 行编辑器的提示符或命令输出。有问题的打印可能是由运行用户命令时行编辑器运行的挂钩函数完成的。您可以通过搜索钩子函数体来找到有问题的 print/echo 调用:
whence -f precmd $precmd_functions preexec $preexec_functions
这些是记录在中的钩子函数http://zsh.sourceforge.net/Doc/Release/Functions.html#Hook-Functions。
正如前面的评论中提到的,有问题的 print/echo 调用可能是与终端对话而不是打印到标准输出的失败尝试。通常我会通过以下方式“排除”有问题的代码行:
if [[ $TERM != guake ]]; then
print -n "\E]..."
fi
但 Guake 似乎没有正确设置 TERM。希望您能找出其他方法来检测哪个终端正在运行。或者也许只是清除/修改 .zshrc 中的这些函数和函数数组。