Bash readline excluindo até a barra anterior

12

No modo bash do emacs, existe alguma maneira de excluir até o caractere de barra anterior? Por exemplo, se eu digitei o comando cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_path e quer apenas apagar o reallylongincorrectfolder . Existe algum atalho? Este é um cenário muito comum para mim no bash. Algo como dF<char> no vi?

    
por woodstok 11.06.2013 / 10:22

3 respostas

7
bind -P |grep unix-filename-rubout

Para testar a ligação de teclas com por exemplo. Ctrl - b :

bind \C-b:unix-filename-rubout

Para uso permanente, adicione-o a ~/.inputrc

    
por 08.01.2015 / 18:08
8
Alt - Backspace e Ctrl - w são comumente mapeados para backward-kill-word , o que faz isso. Se você quiser descobrir o que está mapeado em seu sistema (se houver), execute bind -P | grep '^backward-kill-word' .

Conforme explicado por @Barmar , é diferente de unix-word-rubout , que é removido para o limite do espaço anterior.

    
por 11.06.2013 / 10:54
4

Coloque isso no seu .inputrc e inicie um novo shell:

C-b:unix-filename-rubout

Ctrl - b agora é apagado para a próxima barra.

Nirvana!

Não esqueça de Ctrl - X Ctrl - E iniciará seu editor para que você possa editar um linha de comando complicada confortavelmente.

    
por 22.08.2015 / 00:42