Автозаполнение ZSH портит имя команды

Когда я начинаю выполнять автозаполнение вкладки для команды, рядом с ней сохраняется то, что я изначально набрал, и команда становится нечитаемой. В приведенном ниже примере я набрал git che и нажал вкладку. Когда я выбираю «оформить заказ», командная строка становится «git che git checkout». Команда по-прежнему работает, и в моей истории хранится «git checkout». Но визуально это довольно раздражает. Есть ли способ изменить это поведение. Я пробовал это в двух разных эмуляторах терминала, поэтому могу подтвердить его 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%}'

РЕШЕНИЕ:

ПРИМЕЧАНИЕ: stackoverflow не позволяет мне отвечать на мой собственный вопрос, поскольку я задавал его в течение последних 8 часов. Я не хочу ждать.

Итак, я разобрался. Оказывается, я неправильно избегал цветовых кодов ANSI (я думаю). Везде, где в моей переменной PROMPT был $ reset_color, я изменил его на% {$ reset_color%} и исправил.

6
задан Chris 31 October 2011 в 23:43
поделиться