我已设置set_prompt
为始终在新行上打印提示。
set_prompt() {
local curpos
stty -echo
while read -t 0; do :; done
echo -en "\033[6n"
IFS=';' read -s -d R -a curpos
stty echo
(( curpos[1] > 1 )) && printf "\n"
}
emacs
但现在,如果我在文本编辑器(如或 )中编辑文件nano
,文本会被打乱,就像在错误的位置打印字符或光标在导航时向前或向后跳跃一样,导致文本重叠。
在此刻
PS1=\[\]$(git rev-parse --git-dir > /dev/null 2>&1 && git rev-parse --abbrev-ref HEAD 2>/dev/null || echo ${HOSTNAME})\[\]:\[\]\W\[\] Necktwi\[\]$\[\]
PROMPT_COMMAND=set_prompt
除了设置set_prompt
,还可以这样做
PS1='$(printf "%$((COLUMNS-1))s\r")'$PS1
但即使这样也会出现故障emacs
,未经测试nano
,但没有上面那么糟糕。我能够通过删除生成的虚假字符来纠正这个乱码少得多的文本。