如何在zsh命令行之外的zsh中为输入着色(STDIN /我输入的反馈)?
作为参考,这是我想要输入的内容: http://en.gentoo-wiki.com/wiki/Zsh#Colorize_STDERR
在设置终端颜色时对STDOUT而不是STDIN进行着色并不是一个真正的选择,因为它会使黑名单应用程序(ncurses stuff:emacs,irssi,...)变得更加困难。
答案 0 :(得分:2)
我不知道改变标准输入的方法,但这会使标准输出为绿色和标准红色:
exec 1>>(while read line; do
print '\e[92m'${(q)line}'\e[0m' > /dev/tty; print -n $'\0'; done &)
exec 2>>(while read line; do
print '\e[91m'${(q)line}'\e[0m' > /dev/tty; print -n $'\0'; done &)
上面的 1指的是stdout(exec 1>>
...),2指的是stderr。 0将用于标准输入,但如果用exec 0>>
启动它们,上面的行似乎什么都不做。
我想如果你想改变stdin,你可以将终端颜色改为你想用于stdin的任何颜色,然后使用类似上面命令的东西将stderr和stdout更改为其他东西......
答案 1 :(得分:0)
你不能:程序的输入直接进入终端(tty),输入在没有zsh知道的情况下在终端上回显。
答案 2 :(得分:0)
如果没有通过其他进程管道输出,则无法执行此操作。一种可能性是由yellowantphil发布的zsh版本。不过,其他工具更易于使用,包括但不限于regex-markup,supercat和swatch。
答案 3 :(得分:0)
fish shell会让你感兴趣,当你输入时它在命令行上有语法高亮,但我不认为它是一个稳定的shell(我去年看到的一些基本错误,还有一些用户)和它不尊重众所周知的约定(如返回代码$?
)。
答案 4 :(得分:0)