使用Ctrl-R
,我可以搜索 bash 中的历史记录。
但是,如果我想突出显示我输入的相关单词,该怎么办?
例子:
(reverse-i-search)`mount': sudo mount /dev/sda2 /mnt
在上面的反向搜索中,我想mount
从整个命令中突出显示世界sudo mount /dev/sda2 /mnt
。如何在 bash 中实现这一点?
答案1
readline
(bash
用于其行编辑器)没有这种可能性。
zsh
但默认情况下会这样做。默认情况下,它会用下划线突出显示搜索到的文本,但您可以更改它。例如:
zle_highlight=(isearch:standout)
或者:
zle_highlight=(isearch:fg=red)
(zle
iszsh
的行编辑器,类似于readline
isbash
的)。
答案2
因此,从 Bash 5.1 和 Readline 8.1 开始,您实际上可以这样做。
从https://lwn.net/Articles/839212/:
最明显的新功能是在 Readline 中:添加了“面”,它突出显示点和标记之间的文本(区域,因此也称为“活动区域”)。添加此内容是为了明显地显示通过括号粘贴插入的文本,并且还标记通过增量和非增量历史搜索找到的文本。目前,面与括号粘贴相关联,并与括号粘贴模式一起启用和禁用。默认情况下启用括号粘贴模式。
图片来源:https://www.reddit.com/r/archlinux/comments/ka5xek/
由于它默认启用,因此您需要将以下内容添加到 inputrc 中以禁用它:
set enable-bracketed-paste off