我想格式化 zsh 输出。
例如,对于未找到的函数我现在有:
function command_not_found_handler(){echo $fg[red]"\033[4m???\033[0m"$fg[red]" Command \"$1\" not found."}
返回红色文本和下划线???
。
我为此做了这件事command_not_found_handler
,并希望将相同的逻辑应用于其他错误输出,例如:
zsh: bad pattern: echo[
和
zsh: correct 'ehco' to 'echo' [nyae]?
但我似乎找不到正确的处理程序的名称。它们真的存在吗?如果没有,是否有更通用的方法来更改 zsh 中的警告/错误/信息输出?
一个更通用的方法会更好,这样来自其他程序的错误也会得到相同的格式。例如
cd: no such file or directory: no/dir
也许修改标准错误输出(我不知道这是否有意义,我真的很累......)
答案1
好的,我自己发现了。
使用 c 脚本这里,并对其进行了一些修改,我得到了我需要的东西。
修改如下:因为我想???
在每个错误前面加下划线,所以我将第 107 行的循环改为打印 ???,然后再循环其余错误。如下所示:
if (buffer[0] == 27)
dontcol = 1;
if (buffer[0] == '\n')
dontcol = 0;
if (!dontcol)
fputs(begstr, stdout);
fputs("\0033[4m??? \033[0m", stdout);
putchar(buffer[0]);
if (!dontcol)
fputs(endstr, stdout);
for (i = 1; i < n; i++)
{
if (buffer[i] == 27)
dontcol = 1;
if (buffer[i] == '\n')
dontcol = 0;
if (!dontcol)
fputs(begstr, stdout);
putchar(buffer[i]);
if (!dontcol)
fputs(endstr, stdout);
}