使用 Ctrl-R 使用反向历史搜索时突出显示 bash 中的文本

使用 Ctrl-R 使用反向历史搜索时突出显示 bash 中的文本

使用Ctrl-R,我可以搜索 bash 中的历史记录。

但是,如果我想突出显示我输入的相关单词,该怎么办?

例子:

(reverse-i-search)`mount': sudo mount /dev/sda2 /mnt

在上面的反向搜索中,我想mount从整个命令中突出显示世界sudo mount /dev/sda2 /mnt。如何在 bash 中实现这一点?

答案1

readlinebash用于其行编辑器)没有这种可能性。

zsh但默认情况下会这样做。默认情况下,它会用下划线突出显示搜索到的文本,但您可以更改它。例如:

zle_highlight=(isearch:standout)

或者:

zle_highlight=(isearch:fg=red)

zleiszsh的行编辑器,类似于readlineisbash的)。

答案2

因此,从 Bash 5.1 和 Readline 8.1 开始,您实际上可以这样做。

https://lwn.net/Articles/839212/:

最明显的新功能是在 Readline 中:添加了“面”,它突出显示点和标记之间的文本(区域,因此也称为“活动区域”)。添加此内容是为了明显地显示通过括号粘贴插入的文本,并且还标记通过增量和非增量历史搜索找到的文本。目前,面与括号粘贴相关联,并与括号粘贴模式一起启用和禁用。默认情况下启用括号粘贴模式。

https://www.reddit.com/r/archlinux/comments/ka5xek/latest_readline_upgrade_causes_it_to_highlight

图片来源:https://www.reddit.com/r/archlinux/comments/ka5xek/

由于它默认启用,因此您需要将以下内容添加到 inputrc 中以禁用它:

set enable-bracketed-paste off

相关内容