Existem dois editores de linha em jogo aqui: o editor de linha básico fornecido pelo kernel (editor de linha canônico do modo tty) e o editor de linha do bash (implementado através da biblioteca readline). Ambos têm um comando de apagar para a palavra anterior que é ligado a Ctrl + W por padrão. A chave pode ser configurada para o editor de linha tty do modo canônico através de stty werase ; o bash imita a ligação de chave que encontra na configuração tty, a menos que seja sobrescrito em sua própria configuração.
A ação werase no editor de linha tty não pode ser configurada. Ele sempre apaga (ASCII) palavras delimitadas por espaços em branco. É raro interagir com o editor de linha tty - é o que você obtém, por ex. quando você digita cat sem argumento. Se você quiser criar combinações de teclas especiais, poderá executar o comando sob uma ferramenta como rlwrap que usa readline.
O Bash fornece dois comandos para excluir a palavra anterior : unix-word-rubout ( Ctrl + w ou conforme definido através de stty werase ), e backward-kill-word ( M-DEL , ie Esc Backspace ) que trata uma palavra como uma seqüência de caracteres alfanuméricos na localidade atual e _ . Se você quiser Ctrl + Backspace para apagar a seqüência anterior de caracteres alfanuméricos, não defina stty werase e, em vez disso, coloque a seguinte linha no seu .inputrc :
"\C-h": backward-kill-word
Note que isso pressupõe que seu terminal envia o caractere Ctrl + H para Ctrl + Backspace . Infelizmente é uma daquelas chaves sem ligação padrão (e Backspace em especial é uma bagunça por razões históricas.
Há também um comando simétrico kill-word que está vinculado a M-d ( Alt + D ) por padrão. Para ligá-lo a Ctrl + Excluir , primeiro você precisa descobrir qual seqüência de escape seu terminal envia e, em seguida, adicionar uma linha correspondente em seu .inputrc . Digite Ctrl + V e depois em Ctrl + Apagar ; isso irá inserir algo como ^[[3;5~ , onde o ^[ inicial é uma representação visual do caractere de escape. Então a ligação é
"\e[3;5~": kill-word
Se você não estiver satisfeito com a definição de uma palavra, forneça a sua própria no bash: consulte comportamento confuso de atalhos de estilo no estilo emacs no bash