如何绑定函数 fish shell 插件

How to bind function fish shell plugin

我正在尝试为鱼写一个插件 shell 但无法正常工作。 我在名为 functions/codex.fish 的文件中有以下内容:

function create_completion
    commandline -a test
end

bind \cx create_completion

我安装插件使用 fisher:

tom@desktop-20-3 ~/g/b/z/update_insert (main)> fisher install ~/git/codex.fish/
fisher install version 4.3.1
Installing /home/tom/git/codex.fish
           /home/tom/.config/fish/functions/codex.fish
Updated 1 plugin/s

然而,当我尝试 运行 使用 Ctrl+x 的功能时,没有任何反应。

我做错了什么?

您不需要插件来设置键绑定。这是一种方法:

  1. 创建您的函数:
function create_completion
     commandline -a test
end
  1. 将其保存到磁盘:
funcsave create_completion

(这会创建文件 ~/.config/fish/functions/create_completion.fish;您也可以手动执行此操作。)

  1. 运行 funced fish_user_key_bindings 并添加您的绑定:
function fish_user_key_bindings
    bind \cx create_completion
end

现在 control-X 应该执行函数。

I have the following in a file called functions/codex.fish:

这是你的问题。 Fish 函数是延迟加载的。一旦第一次执行名为“codex”的函数,将加载名为“codex.fish”的文件。

所以这些绑定只会在您在该会话中 运行 “codex” 一次后定义(除非有另一个 codex.fish 具有优先权,在这种情况下它们不会被定义完全没有)。

只需将绑定添加到 config.fish,或 ~/.config/fish/conf.d 中急切加载的文件之一。