Как отметил @BrandonInvergo в комментариях, это две разные проблемы. Поскольку я не знаю Python, я концентрируюсь только на конкретной проблеме zsh .
Оболочка Z использует редактор Z-линии (zle) для взаимодействия с пользователем. Привязки клавиш настраиваются с помощью встроенной команды bindkey (более подробную информацию смотрите в man zshzle ). Существуют разные раскладки клавиш, например, когда вы набираете в приглашении, раскладка main раскладки активна, если вы используете zed (простой, но часто очень удобный редактор файлов), раскладка раскладки zed активна и т.д.
Вы можете отобразить текущие привязки клавиш с помощью bindkey -M [keymap] , main раскладка клавиатуры используется по умолчанию, поэтому в большинстве случаев вы можете просто пропустить параметр -M [keymap] .
Теперь давайте посмотрим на вашу конкретную проблему:
CTRL+A (обозначается как ^A) переходит к началу строки, поэтому вы, вероятно, использовали bindkey -e где-то в своих файлах RC (либо в своем личном ~/.zshrc , но это также может быть выполнено в некоторой общесистемной конфигурации). например /etc/zshrc), чтобы активировать привязки ключей emacs :
$ zsh -f
$ bindkey -e
$ bindkey | head -n 3
"^@" set-mark-command
"^A" beginning-of-line
"^B" backward-char
Чтобы иметь такое же поведение для клавиши HOME , вам нужно идентифицировать полученную строку (которая зависит от используемого вами эмулятора терминала). Простой трюк - запустить cat и нажать нужную клавишу. Это вывод с использованием xterm для клавиши HOME и END :
$ cat
^[[H^[[F
Итак, длинный текст, короткое сообщение - вы хотите поместить эти строки в ваш файл ~/.zshrc (но после команды bindkey -e ):
bindkey "^[[F" end-of-line
bindkey "^[[H" beginning-of-line
И, пожалуйста, не забудьте source ~/.zshrc ... тогда эти два ключа должны работать как нужно.