O que funcionou para mim foi adicionar as seguintes linhas ao meu .bashrc
stty werase undef
bind '\C-w:unix-filename-rubout'
Você precisa da linha undef, caso contrário, o bash ignora sua nova ligação para C-w
Normalmente, Ctrl + W é excluído de volta para o último espaço em branco.
É possível configurá-lo para usar caracteres adicionais, como /
?
Editar: para ser mais claro: não quero configurar a chave para isso, quero que a exclusão também pare em /
.
Exemplo:
vim /foo/bar^W
vim /foo/
O que funcionou para mim foi adicionar as seguintes linhas ao meu .bashrc
stty werase undef
bind '\C-w:unix-filename-rubout'
Você precisa da linha undef, caso contrário, o bash ignora sua nova ligação para C-w
Você deve ser capaz de usar o Esc, em seguida, retroceder para excluir palavras delimitadas por barras.
Você pode mudar isso colocando isso em você .bashrc:
bind '\C-f:unix-filename-rubout'
Agora use Ctrl+f
para fazer o que quiser.
Para este problema específico, você também pode usar:
Alt + Backspace
$ cd /home/me/test/a_dir/ # Alt + Backspace
$ cd /home/me/test/ # Alt + Backspace
$ cd /home/me/ # ...
Boa referência: Aventuras com a palavra do bash apagam
Com o bash você pode obter o efeito desejado, colocando o seguinte no seu arquivo ~ / .bashrc:
bind '"\C-w":backward-kill-word'
Acerte CTRL+V
e sua combinação de teclas para ver como é o seu emulador de terminal. Por exemplo, CTRL+bksp
pode ser interpretado de forma diferente em diferentes terminais, por ex. ^H
ou ^?
. O caractere ^
é o mesmo que CTRL
.