2016-06-16 49 views
0

tmux,zsh,vi模式,oh-my-zsh,TERM設置爲screen-256color 我用Esc K滾動命令歷史,每個命令我都可以左右移動,並且我可以擦除字符,但只要我嘗試插入命令字符串就會出現亂碼。此外,只有當命令長於終端寬度時纔會發生這種情況。zsh/zle編輯長命令,特別是試圖插入字符,亂寫命令字符串

zshrc: 出口ZSH = $ {HOME}/OH-MY-的zsh

ZSH_THEME="robbyrussell-ay" 

CASE_SENSITIVE="true" 

plugins=(git) 

if [ -f $HOME/.aliases ]; then 
    source $HOME/.aliases 
fi 

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 

if [ -f $ZSH/oh-my-zsh.sh ]; then 
    source $ZSH/oh-my-zsh.sh 
fi 

export LANG=en_US.UTF-8 

export KEYTIMEOUT=1 

setopt nosharehistory 

bindkey -v 

PATH=$PATH:${HOME}/bin 
export PATH="$HOME/.plenv/bin:$PATH" 
eval "$(plenv init - zsh)"` 

提示設置在 「robbyrussell-AY」:

local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜)" 

PROMPT=$'[%D{%Y-%m-%d %H:%M:%S}]$fg[cyan][%[email protected]%m]$reset_color $fg[yellow]%~ $fg[green]$(git_prompt_info)\n${ret_status}${reset_color} ' 


ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}" 
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} " 
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗" 
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})" 
+0

你實際使用'screen'或' tmux'?如果是這樣,哪一個?如果不是'TERM'不應該是'screen-256color'。在'tmux'的情況下:你是否在'tmux'配置('〜/ .tmux.conf')或'zsh'配置中設置了'TERM'?它應該是第一個,在shell配置中設置「TERM」幾乎總是錯誤的。 – Adaephon

+0

謝謝@Adaephon,我使用tmux,TERM設置在〜/ .tmux.conf中'set-option -g default-terminal screen-256color' – Alex

+1

發佈完整的'.zshrc'及其包含的任何文件。通常問題是在零寬度序列周圍缺少'%{...%}'的提示。在[unix.se]上做這個,這個網站是關於編程的。 – Gilles

回答

0

事實證明,我在提示有錯誤 -

PROMPT=$'[%D{%Y-%m-%d %H:%M:%S}]$fg[cyan][%[email protected]%m]$reset_color $fg[yellow]%~ $fg[green]$(git_prompt_info)\n${ret_status}${reset_color} ' 

有應已裹%{...%}

$fg[cyan][%[email protected]%m] 

應該

%{fg[cyan]%}[%[email protected]%m] 

最後我稍微改變我的提示,現在看起來是這樣的:

PROMPT='%{$fg[yellow]%}[%*|%D]%}${ret_status}%{$fg[cyan]%}[%[email protected]%m]$reset_color%{$fg[cyan]%}%~%{$reset_color%}$(git_prompt_info) 

$'