我正在尝试从 zsh 转向鱼。正如我所见,如果我使用alias,鱼的加载时间会增加。所以我想将我所有的别名转换为函数,但是为每个别名创建一个函数脚本有点忙。那么如何在单个函数脚本中添加这些别名呢?
首先,aliasFish 中的命令只是用一点语法糖创建函数的快捷方式。例如
> alias ls "ls -lh"
> functions ls
# Defined via `source`
function ls --description 'alias ls ls -lh'
command ls -lh $argv;
end
Run Code Online (Sandbox Code Playgroud)
也许是正在创建/加载的函数的开销导致您的速度变慢。在这种情况下,将它们全部放入一个在启动时(仍然)加载的整体文件可能无济于事。
有几种简单的解决方案甚至不涉及修改您的config.fish:
对于每个别名,只需funcsave <aliasname>. 这会将函数保存到~/.config/fish/functions. 恕我直言,这确实是正确的方法,因为该目录中的函数是按需加载的,而不是在启动时加载。这将为您提供最快的外壳启动时间。
例如:
> alias ls "ls -lh"
> funcsave ls
> ls -n ~/.config/fish/functions/
-rw-r--r-- 1 1000 100 95 Aug 18 14:30 ls.fish
Run Code Online (Sandbox Code Playgroud)
同样,这个文件在启动时甚至没有被触及——它在需要时“延迟加载”。当您ls在会话中第一次调用时,Fish 将ls在~/.config/fish/functions/ls.fish.
此外,只需要funcsave使用现有别名。定义一个新的别名时,只需要alias -s在~/.config/fish/functions.
编辑/更新:您提到希望这尽可能简单,所以这里有一个快速命令行,可以自动保存所有别名函数。运行后,您应该会在其中看到每个别名的相应文件~/.config/fish/functions,您可以从启动中删除现有别名。
for f in (alias | awk '{print $2}'); funcsave $f; end
Run Code Online (Sandbox Code Playgroud)
如果你真的想为你的别名函数创建一个单一的文件,并且你不介意增加启动时间(不管它是多少或多少),那么我仍然不会修改~/.config/fish/config.fish. 只需在其中创建该文件,~/.config/fish/conf.d它将作为启动的一部分自动读取。
每当某些说明说要修改您的 . 时config.fish,请考虑改用一个文件conf.d。它使您可以更轻松地查看(和修改)启动配置的每个部分正在做什么,而无需通过单个config.fish.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |