Question

At end of /usr/share/fish/config.fish, I have the following commands:

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

Afterwards I run fish, it prints "foo". I then run bind to print a list of all binded key combinations, however there are no "forward-word" and "backward-word" entries in the output of bind.

Did I miss something?

Was it helpful?

Solution

EDIT: fish 3.0+ allows you to create key bindings during startup inside your config.fish or configuration snippets (conf.d/*.fish). See fish-shell/pull/5195


Since those keybindings are already defined in fish_default_key_bindings I am guessing the problem lies with your terminal emulator and that it doesn't send the correct escape sequence.

You should also not edit the global config /usr/share/fish/config.fish. Your custom config goes in ~/.config/fish/config.fish

If you want to specify your custom key bindings it should be done inside the function fish_user_key_bindings.

You can do this manually through editing: ~/.config/fish/functions/fish_user_key_bindings.fish.

Or use the tools provided:

If the function does not exist you can do:

function fish_user_key_bindings
  bind \e\[1\;5C forward-word
  bind \e\[1\;5D backward-word
end
funcsave fish_user_key_bindings

Or if you already have the function:

funced fish_user_key_bindings
funcsave fish_user_key_bindings

The reason why you cannot specify these in your config is that they are reset at a later point, here inside fish_default_key_bindings.

OTHER TIPS

Simply put this inside function named fish_user_key_bindings in your config.fish

function fish_user_key_bindings
  bind \e\[1\;5C forward-word
  bind \e\[1\;5D backward-word
end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top