當我開始執行一個命令的tab自動完成時,它會保持我在它旁邊初始鍵入的內容,並且命令變得不可讀。在下面的例子中,我輸入'git che'並點擊標籤。一旦我選擇'checkout',命令提示符就會變成'git che git checkout'。該命令仍然有效,並在我的歷史中存儲'git checkout'。但它的視覺非常惱人。無論如何改變這種行爲。我在2種不同的終端模擬器中試過,所以我可以確認它的ZSH而不是模擬器。由於ZSH自動完成擰緊命令名稱
編輯:
回聲$ ZSH_VERSION
4.3.10
它似乎與zsh的-f發生。雖然很難說,因爲唯一的自動完成工作是目錄。我使用的是 '哦,我的-的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%}'
SOLUTION:
注:計算器不會讓我回答我的問題,因爲我問它在過去的8個小時內。我不想等待。
所以我想通了。事實證明,我沒有正確逃避ANSI顏色代碼(我認爲)。到處都是我的PROMPT變量中有$ reset_color,我將其更改爲%{$ reset_color%},並修復了它。
什麼是您的zsh版本('echo $ ZSH_VERSION')?如果你運行'zsh -f',你會看到同樣的效果嗎?如果沒有,發佈你的zsh配置文件的內容('〜/ .zshrc'和你自定義的其他文件)。 – Gilles