我正在尝试将鱼history
寻呼机设置为bat -l fish
用于语法突出显示。(即仅为命令设置PAGER
环境变量)。bat -l fish
history
我试过:
# 1:
alias history "PAGER='bat -l fish' history"
# results in "The function “history” calls itself immediately, which would result in an infinite loop"
# 2:
alias history "PAGER='bat -l fish' \history"
# results in the same.
# 3:
alias _old_history history
alias history "PAGER='bat -l fish' _old_history"
# results in (line 1): The call stack limit has been exceeded
我知道abbr
在这种情况下这是可行的,但这会改变我的history
命令,这不是我想要的。
这里发生了两件事:
alias
实际上创建了一个函数。所以当你写
你实际上拥有的是递归函数
一些解决方案:
使用不同的名称作为别名
不要
alias _old_history hist
,而是复制它如果你不想保留 fish 函数,可以在你自己的函数中调用内置的history 命令
我认为鱼的设计者并不认为这是历史功能的核心部分。我认为他们将面向用户的内容放在用户可以覆盖的函数中。
以下是默认历史记录功能的相关代码片段:
我成功
functions -c
复制了内置history
函数。结果发现alias
只是创建了一个history
调用自身的函数,而functions -c
完全复制了该函数。(这是我最终在配置中使用的最终版本:
)