如何强制 fish在关闭终端窗口后持续保存新的键绑定?
目前我遇到的问题是:
- 我打开一个终端窗口,默认shell是fish。
- 我添加了一个键绑定:bind \eg functionname
- 它在终端窗口中工作
- 现在我关闭终端窗口
- 打开一个新的终端窗口,再次以 fish 作为默认 shell
- 绑定不再起作用,并且不会显示在输出中
fish -a
答案1
您可以在初始化文件中添加绑定:
/usr/share/fish/config.fish
/etc/fish/config.fish
~/.config/fish/config.fish
例如,您可以添加以下函数:
function __fish_less
commandline -i -- "|less"
end
bind \ey __fish_less
一个例子:
https://github.com/zmalltalker/fish-nuggets/blob/master/config.fish
编辑:
来自鱼壳文档:
初始化文件 在启动时,fish 会按顺序评估文件 /usr/share/fish/config.fish(或者 /usr/local/fish... 如果您在 /usr/local 中安装了 fish)、/etc/fish/config.fish(或者 ~/etc/fish/... 如果您在主目录中安装了 fish)和 ~/.config/fish/config.fish(或者 $XDG_CONFIG_HOME 变量指定的任何其他目录)。第一个文件不应直接编辑,第二个文件用于系统范围配置,最后一个文件用于用户配置。如果您只想在启动交互式 shell 时运行命令,请使用命令“status --is-interactive”的退出状态来确定 shell 是否是交互式的。如果您只想在使用登录 shell 时运行命令,请改用“status --is-login”。
例子:
如果您想在使用登录 shell 时将目录 ~/linux/bin 添加到您的 PATH 变量中,请将以下内容添加到您的 ~/.config/fish/config.fish 文件中:
如果状态--is-login设置PATH $PATH〜/ linux / bin结束
如果您想在 fish 退出时运行一组命令,请使用由 shell 退出触发的事件处理程序:
函数 on_exit --on-process %self echo fish 正在退出结束
通用变量存储在文件 .config/fish/fishd.HOSTNAME 中,其中 HOSTNAME 是您的计算机名称。请勿直接编辑此文件,而是通过 fish 脚本或以交互方式使用 fish 进行编辑。
因此,您应该编辑 ~/.config/fish/config.fish,注销(或重新获取 config.fish),最后您应该得到您的“自定义绑定”。
我建议您阅读整个文档并使用一下 shell,我在这里写的内容都不是来自文档。
然后,如果它不起作用,请带着日志(只要可用)、配置文件回来这里,调试输出等等。
答案2
根据这个问题似乎您需要编辑/创建文件~/.config/fish/functions/fish_user_key_bindings.fish
并在那里放置类似以下内容的内容:
function my_func
echo hello
end
function fish_user_key_bindings
bind \eg my_func
end