Existem dois editores de linhas em jogo aqui: o editor de linhas básico fornecido pelo kernel (editor de linhas tty no modo canônico) e o editor de linhas do bash (implementado através da biblioteca readline). Ambos têm um comando de apagar para a palavra anterior, que é vinculado a Ctrl+ Wpor padrão. A chave pode ser configurada para o editor de linha tty no modo canônico stty werase
; O bash imita a ligação de chave encontrada na configuração tty, a menos que substituída em sua própria configuração.
A werase
ação no editor de linhas tty não pode ser configurada. Ele sempre apaga (ASCII) palavras delimitadas por espaços em branco. É raro interagir com o editor de linhas tty - é o que você obtém, por exemplo, quando digita cat
sem argumento. Se você quiser teclas fantasia lá, você pode executar o comando em uma ferramenta como rlwrap que usa readline.
O Bash fornece dois comandos para excluir a palavra anterior : unix-word-rubout
( Ctrl+ wou conforme definido stty werase
) e backward-kill-word
( M-DEL
, ie Esc Backspace), que trata uma palavra como uma sequência de caracteres alfanuméricos no código de idioma atual e_
. Se você deseja Ctrl+ Backspaceapagar a sequê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 este assume que o seu terminal envia o caráter Ctrl + H para Ctrl+ Backspace. Infelizmente, é uma daquelas chaves sem ligação padrão (e, Backspaceem particular, é uma bagunça por razões históricas).
Há também um comando simétrico kill-word
que é vinculado a M-d
( Alt+ D) por padrão. Para vinculá-lo ao Ctrl+ Delete, primeiro você precisa descobrir qual sequência de escape o seu terminal envia e, em seguida, adicionar uma linha correspondente no seu .inputrc
. Digite Ctrl+ Ve Ctrl+ Delete; isso irá inserir algo como ^[[3;5~
onde a 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, poderá fornecer o seu próprio no bash: veja um comportamento confuso das combinações de teclas no estilo emacs no bash