Fish 从别名访问非别名命令

Fish 从别名访问非别名命令

如何从该命令的别名中访问该命令的非别名版本?在 bash 中,我可以执行类似访问此别名内的alias ls='\ls -l'非别名的操作。我怎样才能在鱼身上做到这一点?lsls

现在我正在使用env该命令获取可执行文件,但是有更好的方法吗? alias man='PAGER="bat -p" /usr/bin/env man'

答案1

对于简单的情况,鱼alias会自己解决。

你可以这样做alias ls='ls -l',它会产生以下函数:

 function ls --description 'alias ls=ls -l'
     command ls -l $argv
 end

因为

  1. Fishalias是一个定义函数的俗气包装器
  2. 通过名称调用命令、跳过函数和内置命令的方法是使用command

所以你可以做

alias man='PAGER="bat -p" command man'

(类似地,builtin foo调用内置“foo”,跳过任何函数)

在这种特定情况下,最好的解决方案是仅设置 $MANPAGER,完全跳过别名:

set -gx MANPAGER "bat -p"

此外,您可以通过自己直接定义函数来避免 Fish 别名的任何问题:

function man
     PAGER="bat -p" command man $argv
end

或使用缩写反而。

相关内容