我想在fish中定义一些别名。显然应该可以在
~/.config/fish/functions
但是当我重新启动外壳时它们不会自动加载。有任何想法吗?
只需使用alias
. 这是一个基本示例:
# Define alias in shell
alias rmi "rm -i"
# Define alias in config file
alias rmi="rm -i"
# This is equivalent to entering the following function:
function rmi
rm -i $argv
end
# Then, to save it across terminal sessions:
funcsave rmi
最后一个命令创建文件~/.config/fish/functions/rmi.fish
。
有兴趣的人不妨在官方手册中了解更多关于鱼别名的信息。
这就是我定义一个新函数foo
、运行它并永久保存它的方式。
sthorne@pearl~> function foo
echo 'foo was here'
end
sthorne@pearl~> foo
foo was here
sthorne@pearl~> funcsave foo
对于后代,鱼别名只是函数:
$ alias foo="echo bar"
$ type foo
foo is a function with definition
function foo
echo bar $argv;
end
删除它
$ unalias foo
/usr/bin/unalias: line 2: unalias: foo: not found
$ functions -e foo
$ type foo
type: Could not find “foo”
fish 首先执行 ~/.config/fish/config.fish 中的命令。如果它不存在,您可以创建它:
vim ~/.config/fish/config.fish
并保存它:wq
第1步。制作配置文件(如 .bashrc)
配置鱼
第2步。像这样写你的别名;
别名 rm="rm -i"
如果您添加一个abbr
而不是一个,alias
您将获得更好的自动完成功能。在 fishabbr
中更接近地匹配 bash 别名的行为。
abbr -a gco git checkout
将添加-a
一个新的abbr
eeviationgco
扩展为git checkout
。
function name; command; end
将您的文件另存为~/.config/fish/functions/{some_function_name}.fish
,当您开始钓鱼时,它们应该会自动加载。
从~/.config/fish/functions 正确加载函数
您只能在文件中设置一个函数,并将文件名称与函数名称相同 + 添加 .fish 扩展名。
这种方式在打开的终端中更改文件内容重新加载功能(注意可能会出现一些延迟~1-5s)
这样,如果您通过命令行进行编辑
function name; function_content; end
然后
funcsave name
您在控制台中有用户定义的功能,并以相同的顺序定制。
在 ~/.config/fish/functions 中创建一个名为 mkalias.fish 的函数并将其放入
function mkalias --argument key value
echo alias $key=$value
alias $key=$value
funcsave $key
end
这将自动创建别名。
@bozhidar-batsov 给出了一个绝对完整的答案,可以帮助人们理解 fish 中别名/函数的内部工作原理。为别名阅读fish文档,还有一个-s
flag使用起来确实很方便,但是没看到有人提过。
-s 或 --save 使用 funcsave 自动将别名创建的函数保存到您的 fish 配置目录中。
定义和保存别名的一站式解决方案(例如)
alias cl 'clear' -s
:. 立即适用于所有会话并保持不变。
导航到~/.config/fish/functions/
,您将看到cl.fish
文件。
# Defined via `source`
function cl --wraps=clear --description 'alias cl clear'
clear $argv;
end
我发现先前的答案和评论不必要地不完整和/或令人困惑。我需要做的最低限度是:
~/.config/fish/config.fish
. 该文件可以选择是软链接。alias myalias echo foo bar
。fish
。要确认定义,请尝试type myalias
. 试试别名。