像command_not_found_handler()这样的zsh处理程序


2

我想格式化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

也许修改标准错误输出(我不知道这是否有意义,我真的很累...)

Answers:


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);
} 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.