Fish shell: 将参数附加到现有函数

Fish shell: append argument to an existing function

我想将 --group-directories-first 添加到 ls 命令。如果在 ~/.config/fish/config.fish 中,我可以定义这样一个别名:

alias ls "ls --group-directories-first"

但它覆盖了 fish shell 的 ls 函数定义:

function ls --description 'List contents of directory'
    set -l param --color=auto
    if isatty 1
        set param $param --indicator-style=classify
    end
    command ls $param $argv
end

我可以重新定义 ls 函数以添加所需的参数:

function ls --description 'List contents of directory'
    set -l param --color=auto --group-directories-first
    if isatty 1
        set param $param --indicator-style=classify
    end
    command ls $param $argv
end

但我不喜欢这个解决方案:我想要的是重新定义 ls 以便使用参数调用之前的 ls 函数。有办法实现吗?

您可以重命名 复制 fish 的 ls 函数:

functions --copy ls __fish_ls

然后在您的函数中使用它:

alias ls '__fish_ls --group-directories-first'

缩写 "ls --group-directories-first"

??