terminal - 为什么我的 Bash 提示颜色使光标出现在错误的位置

标签 terminal bash

<分区>

我得到以下 bash 提示符:

# helper function to set colors
function ps1c() {
    tput setaf $1;
}

PS1='$(ps1c 243)\h $(ps1c 177)\W $(ps1c 214)$ \[\e[m\]';

打字时,有时我的光标会返回到屏幕左侧,看起来像是覆盖了提示。此外,当使用向上箭头浏览我的历史记录时,事情变得很奇怪,并且光标到处都是。

我已经检查了以下内容,但它们并没有真正提供关于如何解决问题的明确答案:

我知道问题与提示的长度有关,而不是 bash 期望的长度,但我是一个完整的 bash 菜鸟。我该怎么做才能解决这个问题?

最佳答案

ps1c 的输出不应计入提示的长度,因此必须将其包装在 \[...\]

PS1='\[$(ps1c 243)\]\h \[$(ps1c 177)\]\W \[$(ps1c 214)\]$ \[\e[m\]'

关于terminal - 为什么我的 Bash 提示颜色使光标出现在错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42121662/

相关文章:

string - 在第 n 个参数之后获取所有参数并在 bash 中将它们连接在一起

mysql - Linux - Docker MySQL 镜像 - 创建 MYSQL_USER

linux - 如何将文件中的字符串作为 bash 脚本的键盘输入传递?

c - 为什么 Linux(?) 终端不是 "consume" '\n' EOF?

terminal - 终端和 iTerm 有不同的 zsh 主题

linux - linux shell中如何判断当前伪终端的主动监听?

linux - 将输出发送到另一个命令

java - -bash : !“:尝试运行Java程序时未找到事件

c - 让可执行文件打开自己的终端窗口

terminal - 是否可以在 Visual Studio Code 启动时自动打开集成终端?