Terminal
zsh:自動修改執行的命令
我最近通過 MacPorts 在我的系統中安裝了 grc(通用著色器),使我能夠為大量預設情況下不支持它的命令獲取彩色輸出(見下面的螢幕截圖)。
我想自動使用 grc,但不是針對特定命令,而是針對每個命令。我使用 zsh 作為我的外殼。
基本上每當我執行時,
command -parameter 1 2 3
我都希望它自動執行為grc command -parameter 1 2 3
.我不想使用別名,例如
traceroute
alias togrc traceroute
,因為我正在為 grc 添加越來越多的命令來著色。我已經研究了 .zshrc 的 preexec 和 precmd 配置,但我還沒有找到一種方法來實現我正在尋找的東西。
您可以通過重新定義接受行小元件來做到這一點:
add-grc() { [[ $BUFFER = grc* ]] || BUFFER="grc $BUFFER"; zle .$WIDGET "$@"; } zle -N accept-line add-grc
但是,它可能會導致諸如“for i (..)”、“var=x”、“f() {”之類的命令出現問題…
其他選擇。同類潛在問題:
TRAPDEBUG() { eval "grc $ZSH_DEBUG_CMD"; setopt errexit; }
我會為每個需要“grc”的命令使用“別名”,而不是試圖找出此處發布的解決方案的例外情況。