多行命令上的zsh错误:删除会弄乱字符

多行命令上的zsh错误:删除会弄乱字符,zsh,Zsh,如果我键入一个多行命令并运行它,一切都会正常工作。 当我按下向上箭头并想删除一些字符时,我看到删除正在进行。但是,如果我运行修改后的命令,我可以看到删除是完全错误的 通常它删除/插入在一个方向上移动一个位置的字符 例如: $ sort file | uniq | grep -v 'some pattern' |less 我想删除单词文件,并将其替换为其他文件。这就是我将要看到的 $ sort other_file | uniq | grep -v 'pattern' |less 这就是实际运

如果我键入一个多行命令并运行它,一切都会正常工作。 当我按下向上箭头并想删除一些字符时,我看到删除正在进行。但是,如果我运行修改后的命令,我可以看到删除是完全错误的

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

例如:

$ sort file | uniq | grep -v 'some pattern' |less
我想删除单词
文件
,并将其替换为
其他文件
。这就是我将要看到的

$ sort other_file | uniq | grep -v 'pattern' |less
这就是实际运行的程序

$ sort fother_file | uniq | grep -v 'pattern' |less
请注意名称“fother_file”。这真的很烦人,并且使得修改历史基本上是不可能的。最后,我将代码复制粘贴到zsh中,并将其粘贴到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 
有人知道如何解决这个问题吗?

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} '
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} '

<代码> %{…%} /代码>不应该是必要的<代码> ZSH 像“代码> %f>代码>的转义序列;<代码> ZSH 已经知道它不前进光标。我也会考虑使用<代码> ZSH 版本控制提示状态,而不是尝试使用<代码> BasHyMealth。<代码> %{…%}。<代码> ZSH < /代码>转义序列不应该像“代码> %F;<代码> ZSH 已经知道它不前进光标。我也会考虑使用<代码> ZSH 版本控制提示状态,而不是尝试使用<代码> BasHyMealth。我想您已经了解到一些东西了。稍后,我想我们有赢家了。谢谢!(我会推迟一点把你的答案标记为正确,直到我有时间更彻底地检查)我想你已经了解了一些事情-我稍后会详细检查,但我想我们有赢家了。谢谢!(我会推迟一点给你的答案打上正确的标记,直到我有时间更彻底地检查为止)