当我开始使用命令的选项自动补全时,它会保留我最初输入的内容,并且命令变得难以阅读。在下面的示例中,我输入了“git che”并按Tab键。一旦我选择了“checkout”,命令提示符就变成了“git che git checkout”。该命令仍然有效,在我的历史记录中存储为“git checkout”。但是从视觉上看,这相当烦人。有没有办法改变这种行为?我在两个不同的终端仿真器中尝试过,所以我可以确认这是ZSH而不是仿真器的问题。谢谢
屏幕截图
编辑:
echo $ZSH_VERSION 4.3.10
似乎在zsh -f中不会发生这种情况。虽然很难判断,因为唯一有效的自动完成是目录。我正在使用“oh-my-zsh”和这个自定义主题:
echo $ZSH_VERSION 4.3.10
似乎在zsh -f中不会发生这种情况。虽然很难判断,因为唯一有效的自动完成是目录。我正在使用“oh-my-zsh”和这个自定义主题:
autoload -U add-zsh-hook
add-zsh-hook chpwd do_ls_on_chdir
function do_ls_on_chdir() {
ls;
}
function dirStack(){
OUT='';
NUM=1;
for X in $(dirs | cut -d ' ' -f2-10); do
OUT="$OUT$1%B$NUM:%b$1$X ";
(( NUM=NUM+1 ))
done
echo $OUT;
}
ZSH_THEME_GIT_PROMPT_ADDED=""
ZSH_THEME_GIT_PROMPT_MODIFIED=""
ZSH_THEME_GIT_PROMPT_DELETED=""
ZSH_THEME_GIT_PROMPT_RENAMED=""
ZSH_THEME_GIT_PROMPT_UNMERGED=""
ZSH_THEME_GIT_PROMPT_UNTRACKED=""
ZSH_THEME_GIT_PROMPT_AHEAD="%{$fg_bold[yellow]%}↑"
ZSH_THEME_GIT_PROMPT_PREFIX=""
ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_DIRTY=" %{$fg_bold[red]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN=" %{$fg_bold[green]%}✔"
local user_color='blue'
local back="${BG[237]}"
test $UID -eq 0 && user_color='red'
PROMPT='$(dirStack $back)
$back%B%!%b$back %{$fg_bold[$user_color]%}%~%{$reset_color%}'\
'$back $(git_prompt_status)%{$reset_color%}'\
'$back%{$fg_bold[magenta]%}$(git_prompt_info)%{$reset_color%}'\
'$back$(git_prompt_ahead)$reset_color'\
'$back%(!.#.>)$reset_color '
PROMPT2='%{$fg[red]%}%_ %{$reset_color%}'
PROMPT3='%{$fg[red]%}... %{$reset_color%}'
RPROMPT='%(?..%{$fg_bold[red]%}exit %?%{$reset_color%})'\
' %{$FG[186]%}(%D %*)%{$reset_color%}'
解决方案:
注意:由于我在过去8小时内提出了问题,stackoverflow不会让我回答自己的问题。我不想等待。
所以我找到了解决方法。原来我没有正确转义ANSI颜色代码(我想)。在我的PROMPT变量中,无论我在哪里使用$reset_color,我将其更改为% {$reset_color%},问题就解决了。
echo $ZSH_VERSION
)?如果你运行zsh -f
,是否看到相同的效果?如果没有,请发布您的zsh配置文件的内容(~/.zshrc
和任何其他您自定义的文件)。 - Gilles 'SO- stop being evil'