我定义了几个我只在一个特定鱼脚本中使用的辅助函数。我把它们放在包装函数中,但你仍然可以通过自动完成找到它们。
如何将其隐藏自动完成并将其范围限制为private
?
function outer
function inner_func
echo "I still find this function via automplete"
end
end
答案 0 :(得分:5)
鱼没有拥有私人功能,但是it is possible this feature will be available in future versions。在此期间,请尝试使用以下技术,命名约定或两者兼而有之。
functions -e function_name
非常接近您的需求。您可以在块结束前使用functions -e function_name
将其从全局范围中删除。
function outer
function inner_func
echo "I still find this function via automplete."
echo "Not anymore!!"
functions -e inner_func
end
# Let's test this!
inner_func
end
$ outer
I still find this function via automplete.
Not anymore!!
$ inner_func
fish: Unknown command 'inner_func'
_my_module_func_name
这不会从全局范围中删除该函数,但是一般的良好做法是避免无意中覆盖现有函数。
在主函数文件中声明的函数(或其他函数内的函数,如inner_func
)在其父函数至少被调用一次之后将只能 <(这是鱼懒函数自动加载) ),并且仅在特定shell会话期间存在。