如果我输入一个多行命令,并运行它,一切正常。 当我按向上箭头,并想要删除一些字符时,我看到删除发生。如果我运行修改后的命令,我可以看到删除都是错误的。
通常删除/插入在一个方向上移位一个位置的字符。
示例:
$ sort file | uniq | grep -v 'some pattern' |less
我想删除file
这个词,并将其替换为other_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 :(得分: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} '