鱼程序设计:为什么config.fish中的`bind`命令没有被执行?

4 linux shell fish

最后/usr/share/fish/config.fish,我有以下命令:

bind \e\[1\;5C forward-word
bind \e\[1\;5D backward-word
echo foo
Run Code Online (Sandbox Code Playgroud)

然后我跑鱼,打印"foo".然后我运行bind打印所有绑定密钥组合的列表,但输出中没有"前向字"和"后向字"条目bind.

我错过了什么?

ter*_*rje 12

编辑:fish 3.0+允许您在启动config.fish或配置片段(conf.d/*.fish)中创建键绑定.见fish-shell/pull/5195


由于这些键绑定已经在fish_default_key_bindings中定义,我猜测问题在于你的终端模拟器并且它没有发送正确的转义序列.

您也不应该编辑全局配置/usr/share/fish/config.fish.您的自定义配置进入~/.config/fish/config.fish

如果要指定自定义键绑定,则应在函数内部完成fish_user_key_bindings.

您可以通过编辑手动执行此操作:~/.config/fish/functions/fish_user_key_bindings.fish.

或使用提供的工具:

如果该功能不存在,您可以执行以下操作:

function fish_user_key_bindings
  bind \e\[1\;5C forward-word
  bind \e\[1\;5D backward-word
end
funcsave fish_user_key_bindings
Run Code Online (Sandbox Code Playgroud)

或者,如果您已经拥有该功能:

funced fish_user_key_bindings
funcsave fish_user_key_bindings
Run Code Online (Sandbox Code Playgroud)

您无法在配置中指定这些内容的原因是它们稍后会在fish_default_key_bindings中重置.

  • 有关此行为的解释,请参阅我的编辑. (3认同)

Mar*_*szS 5

简单地把这个内部函数命名fish_user_key_bindings为你的config.fish

function fish_user_key_bindings
  bind \e\[1\;5C forward-word
  bind \e\[1\;5D backward-word
end
Run Code Online (Sandbox Code Playgroud)