`bind`不运行用户定义的函数

时间:2017-08-06 15:01:09

标签: fish

fish docs说您可以使用语法

运行命令列表

bind <char> cmd1 cmd2 ...

包括https://fishshell.com/docs/current/commands.html#bind列出的一些特殊命令。

编写具有键绑定的插件,

我添加了

bind '&' `backward-delete-char` on_ampersand

fish_user_key_bindings.fish,但没有导致行为 - on_ampersand函数未被调用,backward_delete_char也没有。没有on_ampersand,它就可以了。

文档并未提供有关此行为可能发生的原因。

1 个答案:

答案 0 :(得分:2)

这是鱼的一个错误 - 你可以将输入缓冲区编辑命令与你自己的命令结合起来。请参阅https://github.com/fish-shell/fish-shell/issues/3683

解决方法是在用户定义的函数中使用commandline -f [function]语法来访问fish_user_key_bindings专用的函数:

function on_ampersand
    commandline -f backward-delete-char # or whatever
    [your code]
end