Como o @BrandonInvergo apontou nos comentários, estas são duas questões diferentes. Como não sei python, apenas me concentro no problema específico de zsh .
O shell Z usa o editor de linha Z (zle) para interagir com o usuário. As combinações de teclas são configuradas com o bindkey builtin (consulte man zshzle para obter informações mais detalhadas). Existem mapas de chave diferentes, por ex. quando você digita no prompt, o mapa de teclado main está ativo, se você usar zed (um editor de arquivos simples, mas geralmente muito conveniente), o mapa de teclado zed está ativo, etc.
Você pode exibir os atalhos de teclado atuais com bindkey -M [keymap] , o main keymap é o padrão, portanto, em mais casos, você pode simplesmente omitir o parâmetro -M [keymap] .
Agora, vamos dar uma olhada no seu problema específico:
CTRL+A (representado por ^A ) pula para o início da linha, então você provavelmente usou bindkey -e em algum lugar dos seus arquivos RC (no seu ~/.zshrc pessoal, mas também pode ser emitido em alguns configuração do sistema como /etc/zshrc ) para ativar as associações de teclas emacs :
$ zsh -f
$ bindkey -e
$ bindkey | head -n 3
"^@" set-mark-command
"^A" beginning-of-line
"^B" backward-char
Para ter o mesmo comportamento para a chave HOME , você precisa identificar a string produzida (que depende do emulador de terminal que você usa). Um truque simples é ativar cat e pressionar a tecla desejada. Esta é a saída usando xterm para a chave HOME e END :
$ cat
^[[H^[[F
Portanto, texto longo, mensagem curta - você deseja colocar essas linhas no arquivo ~/.zshrc (mas após o comando bindkey -e ):
bindkey "^[[F" end-of-line
bindkey "^[[H" beginning-of-line
E, por favor, não esqueça de source ~/.zshrc ... então essas duas chaves devem funcionar como desejado.