Primeiro, chaves especiais são manipuladas pelo próprio programa, não pelo dispositivo tty. Quando você pressiona Esquerda , o Terminal.app envia ESC [D
para bash , e a interpretação é da biblioteca Readline do bash .
As únicas exceções são as chaves listadas em stty -a
- quando o tty está no modo "cozido", ele mesmo interpreta tais pressionamentos de tecla como Backspace. (Bash e Zsh usam o modo "raw", mas mudam temporariamente para "cozido" antes de executar um programa).
Segundo, os shells e git --interactive
são completamente programas não relacionados. Quando você executa git
, o shell está suspenso. Todos os programas obtêm acesso direto ao dispositivo tty, e cada um usa sua própria biblioteca para interagir com ele - bash usa Readline, zsh usa seu próprio ZLE, git --interactive
lê o terminal diretamente. As ligações feitas em zsh só se aplicam quando zsh , não git , está lendo no terminal.
Como eu disse, git --interactive
lê diretamente do terminal, o que significa que você não pode usar bindkey
de Zsh ou ~/.inputrc
de Readline com ele. Você teria que modificar o programa para usar Readline ou uma biblioteca semelhante. (Como o git-add--interactive
é um script Perl, você pode reescrever partes dele para usar o Term :: ReadLine, mas eu não espero que ele seja aceito pelo autor.)