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.