Eu recentemente tentei trocar o tcsh por um longo tempo por um usuário bash e eu estava lamentando a tecla extra para excluir "palavras" para a esquerda, então eu estive procurando modificar os comportamentos no bash para torná-lo mais como tcsh para não precisar remapear meus 18 anos de memória muscular. O que estou tentando descobrir atualmente é:
Como alterar os "limites de palavras" quando escape delete
é digitado. (Note, quero dizer, 2 pressionamentos de tecla separados.)
No tcsh, quando quero apagar uma palavra para a esquerda, repito 2 pressionamentos de teclas: escape delete. Eu sei que o bash usa control-w para matar a palavra à esquerda e eu descobri como fazer isso ignorar traços e sublinhados como limites de palavras (mas minha memória muscular tcsh usa control-w para excluir tudo o que resta do cursor - bash controle-u). Você pode fazer um dos dois:
bind '\C-w:unix-filename-rubout'
ou
stty altwerase
(embora eu não saiba ainda se isso tem algum efeito colateral indesejado - eu ainda estou tentando entender as coisas). Cada um permite que o controle-w apague através de traços e sublinhados, mas eu não sei como eles diferem de outra forma.
No entanto, fiquei surpreso que a sequência de teclas escape delete
nesses dois casos ainda estivesse parando em traços e sublinhados. Eu tentei diferentes comandos de vinculação para alterar isso, como:
set bind-tty-special-chars Off
set bind-tty-special-chars On
bind '\e\C-h:unix-filename-rubout'
bind '\e\C-?:unix-filename-rubout'
Mas nenhum deles altera o comportamento de limite de palavra de escape delete
.
Algumas notas: Eu realmente não sei o que o escape delete
está fazendo no meu terminal - ou seja, o que está enviando para o bash. Se eu fizer control-v escape
, vejo ^[
. Se eu fizer control-v delete
, vejo ^?
. Estou usando o Terminal.app no macOS. Eu tenho a chave delete definida para não enviar control-h, porque não se comporta da maneira que eu espero em todos os contextos. Eu também não tenho a opção definida como uma meta-chave, já que tenho sido cauteloso para não interromper o uso da opção de seta e clicar com opção para mover o cursor.