Zsh 使用READNULLCMD访问文件名(扩展名)

Zsh 使用READNULLCMD访问文件名(扩展名),zsh,Zsh,Zsh中用于catting文件的一个不错的快捷方式是,例如Python文件类型: <somefile.py 事实上,当一只蝙蝠出现时,这种方法就起作用了,因为蝙蝠会寻找它。但是,由于输入仅被视为STDIN,因此无法通过扩展名检测文件类型。由于大多数文件都没有shebang行,所以为了检测文件类型,文件扩展名是一个必要的后备方法 使用函数调试READNULLCMD时没有可用的方法。我尝试过用set-x、greppingenv等来包装,但没有找到查看名称的方法。如果我能看到它的名字,那么可以

Zsh中用于
cat
ting文件的一个不错的快捷方式是,例如Python文件类型:

<somefile.py
事实上,当一只蝙蝠出现时,这种方法就起作用了,因为蝙蝠会寻找它。但是,由于输入仅被视为
STDIN
,因此无法通过扩展名检测文件类型。由于大多数文件都没有shebang行,所以为了检测文件类型,文件扩展名是一个必要的后备方法

使用函数调试READNULLCMD时没有可用的方法。我尝试过用
set-x
、grepping
env
等来包装,但没有找到查看名称的方法。如果我能看到它的名字,那么可以使用这样的东西:

mynullcmd() { bat -l $stdin_filename:x } # get extension and use as file type
READNULLCMD=mynullcmd

问题:Zsh是否有办法知道什么是作为STDIN传入的?它能知道包含
somefile.py
的命令吗?

使用别名,比如
c
cat
的缩写:

alias c=bat
c somefile.py

其他可行的Highlighter包括和,但我发现
bat
在速度和语言支持的广度方面是最有能力的。

是的,我意识到我可以只键入
bat somefile.py
,但我真的很喜欢
我认为唯一的选择是如果有办法找到为标准输入打开的文件名。打开
READNULLCMD
时,输入已经被重定向,没有理由接收文件名作为参数。
alias c=bat
c somefile.py