2017-09-26 47 views
1

我想从命令行和脚本中定义一些可供使用的函数。一种方法是创建一个文件的每一个功能,并将其存储在autoloading folder(例如~/config/fish/functions/one.fish~/config/fish/functions/two.fish,...)如何维护单个文件中的鱼类功能集合?

但我不希望维持它自己的文件中的每个功能。有没有什么办法可以在一个文件中定义一组函数(例如可以从命令行和多个脚本中引用它们)?我们希望看到它。)

(或者,鱼是由强大的设计原则引导的。如果有文档记载的鱼被设计为这种方式来存储每个用户定义函数的一个文件,我想看看它。)

回答

3

您可以在单个文件中只包含多个函数,但是您只能对其中的一个使用自动加载。

问题是这样的:如果你在一个文件中有一个函数“foo”和一个函数“bar”,鱼应该如何知道,而不是先读取文件?

对于自动加载,该文件以函数命名(例如“bar”将存储在“bar.fish”中),以便鱼可以找出它的位置。

所以,你可以做两件事情之一:

  • 如果其中一项功能总是先叫,那么你可以使用它作为文件名,并将其存储在一个函数文件。使用该功能之后,鱼知道其余的(因为它是文件source)。

  • 如果情况并非如此(或者您不想依赖它),您可以在需要时手动输入source文件(或者在启动时只手动一次)或将其存储在配置代码段中在〜/ .config/fish/conf.d/SOMETHING.fish中(在读取config.fish之前,它会自动将source)。

前者意味着例如辅助函数可以与主函数一起存储。后者在不使用该函数的情况下加载文件时速度会稍慢一点,但除非您过度使用,否则您甚至不会注意到。

+1

我基本上使用后一种策略。我有我的配置克隆到几台机器的git。在我的config.fish中,我有'source config.fish。(hostname)',我可以为每个盒子配置不同的函数,fish_user_path等。 –