当我使用 Ctrl+R 搜索时,命令中出现文本“(reverse-i-search)”

当我使用 Ctrl+R 搜索时,命令中出现文本“(reverse-i-search)”

我不知道如何解释这一点。当我在 bash 中使用Ctrl+R命令反向搜索命令时,反向搜索的实际文本出现在命令本身中。

例如,如果我输入Ctrl+R hello来搜索关键字你好在历史命令中,我看到了这一点:

DESKTOP-NHBC022@quant:~$ echo "hello world"
hello world
(reverse-i-search)`hello': echo "hello world"

到目前为止一切顺利,但假设我现在想在执行命令之前“编辑”它。如果我按就Enter可以了,并执行命令,但如果我按→ (right arrow)End键移动光标,文本(reverse-i-search)hello位将成为文本的一部分:

DESKTOP-NHBC022@quant:~$           (reverse-i-search)`hello ': echo "hello world"

编辑:我的 中有一个自定义PS1环境变量.bashrc。如果我删除它,问题就会消失。所以我想我的问题是,这有什么问题?

export EDITOR=vim
alias vi=vim
alias ls='ls --color=auto'

set editing-mode vi

[ -f ~/.fzf.bash ] && source ~/.fzf.bash
export TERM='xterm-256color'

_GREEN=$(tput setaf 2)
_BLUE=$(tput setaf 4)
_RED=$(tput setaf 1)
_RESET=$(tput sgr0)
_YELLOW=$(tput setaf 3)
_BOLD=$(tput bold)
export PS1="${_GREEN}\h${_YELLOW}@${_RED}\u${_RESET}${_YELLOW}:${_RESET}\w${_RESET}\$ "

答案1

您的问题的答案与此相同:Bash 终端无法正确换行。答案是“将输出包装tput\[ \]”。另一个问题实际上并没有使用tput,因此如果您在将解决方案调整到您的确切设置时遇到麻烦,我会发布此社区 wiki 答案,而不是投票关闭您的问题作为重复。

像这样修改您的代码.bashrc

_GREEN="\[$(tput setaf 2)\]"
_BLUE="\[$(tput setaf 4)\]"

等等,修复所有使用 输出的变量tputexport PS1=…然后您的行不需要修改。启动一个新的交互式 shell。现在应该已经修复了问题。

相关内容