我想让printf
第9行上的/usr/share/fish/functions/__fish_move_last.fish
保持沉默,因为我觉得这很烦人。
在不复制整个功能的情况下该怎么做?
如果仅将文件复制到~/.config/fish/functions/
并注释第9行,则当原始功能在新版本中更新时,我可能会破坏事情。
我宁愿使用以下方式使函数静音:
functions -c __fish_move_last __fish_move_last_ORIG
function __fish_move_last
__fish_move_last_ORIG $argv >/dev/null
end
但是,如果我将该代码段放在~/.config/fish/functions/__fish_move_last.fish
中,则会出现此错误:
fish:无法自动加载项目'__fish_move_last',因为它已被自动加载。这是自动加载脚本中的循环依赖项,请删除它。
我尝试在文件的开头显式加载原始函数,以避免自动加载,但并没有使错误消失:
source /usr/share/fish/functions/__fish_move_last.fish
functions -c __fish_move_last __fish_move_last_ORIG
function __fish_move_last
__fish_move_last_ORIG $argv >/dev/null
end
这里正确的方法是什么?
答案 0 :(得分:2)
在不复制整个功能的情况下该怎么做?
你没有。
实际上,解决方案是复制整个功能。
当原始功能在新版本中更新时,我可能会破坏事情。
从理论上讲,这是可能的。但是,在这种情况下,对它的最后更改是
重新格式化,于2016年11月
在2016年7月将“ ...”更改为省略号(“…”)
在201 0
所以我认为你很安全。
如果您仍然对此感到担心,还可以复制此功能以及所有依赖此功能的功能(我想是上一个还是下一个)。
或者您可以在上一个和下一个中使__fish_move_last
的输出静音,或者使那些静音。
任何形式的覆盖函数的任意位似乎都容易出错,而不是更少。