【发布时间】:2021-01-05 13:37:09
【问题描述】:
我在 Mac OS 终端上使用 Zsh 作为我的默认 shell,并使用 .zshrc 文件来更新别名
我要更新的命令之一是cat。我想用语法高亮和行号打印命令的输出。
所以当我输入cat <filename>时,它应该别名为pygmentize -g <filename> | nl -b a
到目前为止我尝试过的不同方法,
方法#1:
alias cat="pygmentize -g $1 | nl -b a"
这是立即打印带有行号的文件内容,但暂时不返回。因此,当我按下 Ctrl+C 时,出现以下错误。
Traceback (most recent call last):
File "/usr/local/bin/pygmentize", line 33, in <module>
sys.exit(load_entry_point('Pygments==2.7.3', 'console_scripts', 'pygmentize')())
File "/usr/local/Cellar/pygments/2.7.3/libexec/lib/python3.9/site-packages/pygments/cmdline.py", line 557, in main
return main_inner(popts, args, usage)
File "/usr/local/Cellar/pygments/2.7.3/libexec/lib/python3.9/site-packages/pygments/cmdline.py", line 408, in main_inner
code = sys.stdin.buffer.read() # use .buffer to get a binary stream
KeyboardInterrupt
方法#2:
function cat() { pygmentize -g $1 | nl -b a }
相同的输出,当按下 Ctrl+C 时,堆栈跟踪与上面一样。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
我不会用执行完全不同的命令的命令来掩盖标准实用程序的名称。
-
这个错误仅仅意味着
pygmatize没有被写入干净地退出以响应中断信号;你可以忽略它。 -
谢谢@chepner,是的,我可以忽略错误,但文件内容也没有被打印出来。
-
你是如何使用这个功能的?
pygmatize试图从标准输入中读取的事实很奇怪。别名肯定是错误的,因为别名不带参数,但我希望该函数能够正常工作,例如cat myfile.py。 -
@BaranidharanS : 手动调用
pygmentize -g filename | nl -b a会起作用吗?
标签: macos zsh alias oh-my-zsh zshrc