Как отметил @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
... тогда эти два ключа должны работать как нужно.