2016-09-10 21 views
0

如果我键入多行命令,并运行它,一切正常。 当我按下向上箭头,并要删除一些字符,我看到删除发生。如果我运行修改后的命令,我可以看到删除全部错误。zsh多行命令错误:删除字符混淆

通常它会删除/插入在一个方向上移动一个位置的字符。

例子:

$ sort file | uniq | grep -v 'some pattern' |less 

我想删除单词fileother_file更换。这是我看到

$ sort other_file | uniq | grep -v 'pattern' |less 

这是将实际运行

$ sort fother_file | uniq | grep -v 'pattern' |less 

公告名称为 'fother_file'。这真的很烦人,并且使修改历史基本上不可能。我最终将代码复制粘贴到zsh中。

这是我的〜/ .zshrc文件

HISTFILE=~/.zshhistfile 
HISTSIZE=40000 
SAVEHIST=1000 
bindkey -v 
zstyle :compinstall filename '/home/shefuto/.zshrc' 

autoload -Uz compinit 
compinit 

if [ -f ~/.aliases ]; then 
    . ~/.aliases 
fi 

export PS1="%{%F{yellow}%}%T]%{%F{green}%}%n%{%F{yellow}%} %~ %{$%f%} " 

export WORKON_HOME=~/ve 
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh 
workon tmp2 

if [[ -e /etc/bash_completion.d/git-prompt ]]; then 
    . /etc/bash_completion.d/git-prompt 
fi 
setopt PROMPT_SUBST ; 
export RPROMPT='%{%F{red}%}$(__git_ps1 2>/dev/null)' 

bindkey "^?" backward-delete-char 

bindkey -e 

有谁知道如何解决这一问题?

+0

'%{...%}''''''''''''''''zsh'转义序列不应该是必需的。 'zsh'已经知道它不会前进光标。我也考虑使用'zsh'的版本控制提示状态,而不是尝试使用'bash_completion'。 – chepner

回答

1

PS1="...%{$%f%} "告诉zsh$不提前光标,所以zsh没有准确的视图提示长度是什么。你也不需要%{...%}围绕zsh自己的逃生,因为它知道他们不移动光标。尝试

PS1="%F{yellow}%T]%F{green}%n%F{yellow} %~ $%f " 

%{...%}将是封闭的转义字符像\e[32m明确的序列,这是开启绿色文字的ANSI CSI序列。为此,zsh使用其自己的终端独立序列%F{green}

PS1=$'%{\e[33m%}%T]%{\e[32m\%}%n%{\e[33m%} %~ $%{\e[0m} ' 
+0

我认为你在做些什么 - 稍后我会详细介绍一下,但我认为我们有一个赢家。谢谢! (我会推迟将答案标记为正确一点,直到我有时间仔细检查) –