Terminal no Mac - Excluir comportamento chave

6

Eu gostaria que a tecla delete (bem, a combinação Fn + Backspace ) no meu Mac se comportasse da mesma maneira no Terminal como faz normalmente. Isto é, para fazer a eliminação antecipada . No momento, ele produz til - pelo menos é o que vejo.

Em Vinculando Fn-Delete em zsh no Mac OS X Eu vi alguns hackery e tentei também:

(pressionado [Fn] + [< ---] dentro das aspas abaixo)

$ echo "~" | od -c
0000000   ~  \n
0000002

Como posso fazê-lo se comportar?

    
por Martin Janiczek 26.05.2011 / 01:18

1 resposta

13

A resposta para a pergunta que você ligou mostra como encontrar a seqüência de controle Terminal envia quando você pressiona Fn Backspace : echo ' Controle V Fn Backspace ' | od -c .
O Controle V é crítico para impedir a interpretação especial do (provável) caractere ESC inicial.

Terminal provavelmente envia a seqüência de quatro bytes ESC [ 3 ~ .

A pergunta à qual você se conectou estava perguntando sobre zsh . O comentário na resposta dá o comando para ligar a sequência em zsh , ou seja:

bindkey "^[[3~" delete-char

(geralmente em ~/.zhsrc ).

No entanto, bash é o shell padrão no Mac OS X, então o comando para vincular uma chave (e as funções disponíveis para ligação) será diferente se você estiver usando bash : bind '"\e[3~": delete-char' . Você provavelmente vai querer colocar isso em um arquivo de inicialização bash 1 .

Se você achar que está usando bash , mas quer usar zsh , então existem duas maneiras de alterar seu shell efetivo:

  • Use chsh -s /bin/zsh para alterar seu shell padrão.
    Isso mudará o shell que o Terminal inicia, assim como o shell iniciado para outras sessões de login (por exemplo, logins por SSH).
  • Configure apenas o Terminal para usar um shell diferente nas preferências do Terminal .
    Terminal > Preferências… , botão de barra de ferramentas Configurações e, em seguida, a guia Shell ,
    altere o comando de execução para (por exemplo) /bin/zsh -l .

1 Geralmente ~/.bashrc , mas você também pode colocar uma linha relacionada ( "\e[3~": delete-char ) em ~/.inputrc . Se você colocar o seu .bashrc , você vai querer ter certeza de que você também tem uma linha como source ~/.bashrc em ~/.bash_profile , ou ~/.bash_login (se você não tem nenhum, então crie o primeiro; se você já tem exatamente um deles, então use o que você tem; se você tiver ambos, então você deve consertar isso, pois provavelmente apenas o primeiro está sendo usado).

    
por 26.05.2011 / 21:27