Первое, на что нужно обратить внимание, это то, что Ctrl+стрелка влево не имеет никакого смысла и не может быть сделано в любой оболочке. Это потому, что клавиша ctrl фактически не отправляет никаких символов сама по себе (если вы не сделали что-то очень необычное для конфигурации вашего терминала). Эта клавиша изменяет следующую букву, которая нажимается. Например, ctrl+a заставляет терминал отправлять однобайтовое шестнадцатеричное значение 0x01. Поскольку такие клавиши, как стрелка влево, обычно отправляют последовательность символов, начинающуюся с символа esc , а escape - это уже управляющий символ, применение модификатора control к нему ничего не дает.
Как вы нашли обычный способ сделать это, используйте Alt. Если вы сконфигурировали свой терминал для обработки его как «мета-ключа», который ставит префикс перед последующим символом escape, вы можете нажать alt+page-up, чтобы терминал отправил \e\e[5~
. Если вы собираете fish из исходников git, вы получите удобную программу с именем fish_key_reader
которая значительно упростит изучение того, какие ключи отправляются. Это будет в выпуске Fish 2.3.1, который должен появиться через пару недель.
Наконец, пользовательские привязки клавиш должны быть в вашем личном конфигурационном файле, а не в глобальном скрипте /usr/share/fish/functions/fish_default_key_bindings.fish
. Вы должны создать файл с именем $HOME/.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