早上好,
我的命令行发生了一些奇怪的事情,我需要一些帮助来找出问题所在。
首先,我一直使用我的Mac Book编写代码超过一年,当我开始时,我使用的是Flatiron School提供的工具。我提到这个是因为我不知道这个.bash_profile
文件是如何在我的主目录中创建的,我怀疑它是在我用他们的“帮助”设置我的机器时创建的。我想我正在处理一些版本的Git Bash,但我不确定 - 我是盲目地遵循这个训练营的指示。
最近我更改了CHAR
中的本地变量.bash_profile
,这是我的PS1设置的一部分。将我的提示从//❤️
(默认)更改为⚡️ ⚡️
(更酷)。
我阅读了PS1设置,以便更改我的命令行提示,并相信已经做好了一切,但是出现了两个非常烦人的行为:
1)当我删除所有终端输入时,我的提示也会被删除,但在点击后返回如下:(将不得不接受我的话)
2)当我的终端输入到达窗口边缘时,它形成一个5个字符的新行,然后再次形成一个新行:
最后,我认为这是我.bash_profile
文件中的相关代码,我希望在命令行和PS1中有更多经验的人能够看到我做错了什么,谢谢阅读。
# This function builds your prompt. It is called below
function prompt {
# Define some local colors
local RED="\[\033[0;31m\]" # This syntax is some weird bash color thing I never
local LIGHT_RED="\[\033[1;31m\]" # really understood
local CHAR="\[⚡️ ⚡️\]"
local BLUE="\[\e[0;49;34m\]"
# ♥ ☆ - Keeping some cool ASCII Characters for reference
# Here is where we actually export the PS1 Variable which stores the text for your prompt
export PS1="\[\e]2;\u@\h\a[\[\e[37;44;1m\]\t\[\e[0m\]]$RED\$(parse_git_branch) \[\e[32m\]\W\[\e[0m\]\n\[\e[0;31m\]$CHAR \[\e[0m\]"
PS2='> '
PS4='+ '
}
# Finally call the function and our prompt is all pretty
prompt
答案 0 :(得分:1)
尽可能使用硬引号('
)
......或双重逃脱。
这里真正的问题是,您需要正确说明哪些部分未真正打印,因此字符数为零。如果您错误地指出颜色更改的终端控件(例如,红色为\033[0;31m
)具有一定宽度,则行将溢出并且⌫退格可以删除提示(或部分)。
您可以使用方括号表示终端代码的实际宽度为零。但实际上,他们需要转发到'\['
和'\]'
。
可以使用双引号,但需要添加额外的转义层,以分别产生"\\["
和"\\]"
。
将PS1
括在单引号('
)中几乎完全不同。
如需进一步阅读,请参阅:https://unix.stackexchange.com/questions/150492/backspace-deletes-bash-prompt