颜色反向搜索失败

颜色反向搜索失败

我可以输入命令:

$ echo hello
hello

然后使用 Ctrl+R 搜索它:

(reverse-i-search)`h': echo hello

那么有时候搜索会失败:

(failed reverse-i-search)`hz': echo hello

我可以以某种方式为显示的“反向搜索失败”部分着色吗?我更喜欢红色文本与普通白色文本形成对比。这样我就可以很快知道搜索失败了。

答案1

基于 Bash (4.4) 的当前版本,消息“failed reverse-i-search”在与“reverse-i-search”相同的位置和相同的方式生成,使得它们无法区分任何可能改变其颜色的功能。

本质上,要完全达到您的要求,就需要修改 bash 源代码。 (文件 ./lib/readline/isearch.c 第 180 行左右)http://git.savannah.gnu.org/cgit/bash.git/tree/lib/readline/isearch.c

另一种方法是为您的终端启用“可视铃”,因为当搜索失败时,会执行“按铃”操作,该操作可以是终端上的音频或视觉事件。 (参见文件./lib/readline/isearch.c第715行)

答案2

作为czvtools 指出,“反向搜索失败”会响铃。您可以创建一个视觉铃声而不是常规铃声。创建一个文件“xterm-vb.terminfo”:

xterm-vb|red visible bell,
# \e7                   save current cursor position
# \e[40A                up 40 lines
# \e[80C                move right 80 spaces
# \e[4D                 move left 4 spaces
# \e[5;30;41mERROR\e[m  bright background; foreground black; background red
# \e8                   restore cursor to position of last save_cursor
  flash=\e7\e[40A\e[80C\e[4D\e[5;30;41mERROR\e[m\e8,
  use=xterm,

编译并安装文件:

tic xterm-vb.terminfo

将行添加到“~/.profile”或类似内容:

TERM=xterm-vb

将行添加到“~/.inputrc”:

set bell-style visible

相关内容