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

时间:2013-05-21 00:28:09

标签: linux shell fish

/usr/share/fish/config.fish结束时,我有以下命令:

bind \e\[1\;5C forward-word
bind \e\[1\;5D backward-word
echo foo

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

我错过了什么吗?

2 个答案:

答案 0 :(得分: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

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

funced fish_user_key_bindings
funcsave fish_user_key_bindings

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

答案 1 :(得分: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