当我开始输入时,长时间生成的 Bash 提示符不正确地换行

当我开始输入时,长时间生成的 Bash 提示符不正确地换行

我有一个需要一段时间(约 100-200 毫秒)才能生成的 Bash 提示符,因为它包含需要一些时间来计算的 Git 工作树状态。有时,我在命令出现之前就开始输入该命令,但随后该命令会错误地换行。

这是我在终端中看到的内容:

# I start typing:
some command...

# then the prompt appears:
some command...username [branch*] some/directory $ some command...

# then I type some more, causing the command to wrap:
some command...username [branch*] some/directory $ some command...wra
pping text 1

# and when I continue typing, the text overwrites the second line:
some command...username [branch*] some/directory $ some command...wra
wrapping text 2

知道如何防止这种情况吗?

以下是我的 Bash 提示符的设置方式:

# in .bashrc:
PROMPT_COMMAND="PS1=\`/home/username/my-prompt.sh\`"

# in /home/username/my-prompt.sh:
$PROMPT=...
$PROMPT+=...
echo -ne $PROMPT

我相信我在 $PROMPT 中正确设置了所有的\[和。\]仅当我在提示出现之前开始输入并且命令换行时,才会出现此问题。

答案1

在生成提示时禁用终端输出可能有效:

PROMPT_COMMAND="PS1=\$(stty -echo)\`/home/username/my-prompt.sh\`\$(stty echo)"

答案2

我建议您使用以下命令将终端设置为理智模式(开玩笑)

stty sane  # I hope it'll help and bring back the working of default prompt.

相关内容