使用时tmux
,我遇到了使用向上和向下箭头键时出现幽灵字符在 Bash 中。如果我按UpArrow几次,然后按DownArrow几次,那么前一个命令的前几个字符仍保留在 Bash 行中。
例如,以下是这行干净的 Bash 代码:
$
现在我按UpArrow三次:
$ ls /home/dotancohen/Downloads
现在我按DownArrow三次:
$ ls /home/do
退出并重新启动后,我可以重现没有 ~/.tmux.conf 文件的问题tmux
。我该如何诊断?
编辑:这是我的$PS1
:
$ echo $PS1
\[\] - \h():\W$ \[\]
请注意,从第二个反斜杠到最后一个右括号的所有内容都是绿色。此函数创建提示符:
PROMPT_COMMAND=$(
cat<<-'EOF'
retval=$?
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
STOP=$(tput sgr0)
c=0
for i in $retval ${PIPESTATUS[@]}; do ((c += $i)); done
if (($c == 0)); then
PS1="\[$GREEN\] - \h(${WINDOW}):\W$ \[$STOP\]"
else
PS1="\[$RED\] - \h(${WINDOW}):\W$ \[$STOP\]"
fi
EOF
)
答案1
当然,这与https://superuser.com/a/695350/38062。在此特定情况下,您忘记用\[
和分隔的非间距转义序列\]
(即 banjanxing bash)显然位于 的扩展中的某个地方${WINDOW}
。