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