Для привязки клавиш к командам в оболочке fish существует команда bind. Однако, все сделанные ей изменения сохраняются только в текущем сеансе.
За установку привязок отвечает переменная сервиса fishd - fish_key_bindings. В качестве её значения указывается функция установки привязок. По-умолчанию вызывается fish_key_bindings, которая и затирает установленные вручную привязки в новых сеансах.
Для примера, закрепим функции перехода через слова за сочетаниями Control+Left, Control+Right.
> funced my_key_bindings my_key_bindings> function my_key_bindings end
Теперь между строками function и end вводим три нижеприведённые строчки, чтобы получилось следующее (перевод строки - Alt+Enter):
my_key_bindings> function my_key_bindings fish_default_key_bindings bind '[1;5D' backward-word bind '[1;5C' forward-word end
Закрываем редактор функции (Enter), сохраняем функцию:
> funcsave my_key_bindings
Теперь надо установить данную функцию как параметр fish_key_bindings:
> set fish_key_bindings my_key_bindings
Проверяем, всё должно работать. При изменении функции устанавливать заново параметр fish_key_bindings не надо, сервис fishd выполнит её для всех сеансов сразу после обновления.
P.S. Кто себя чувствует уверенно, может исправить непосредственно функцию fish_default_key_bindinds. P.P.S. Если при правке fish_default_key_bindinds что-то у вас не срослось, удалите файл ~/.config/fish/functions/fish_default_key_bidings.
Дискуссия