Excluir linha de leitura do bash até a barra anterior

15

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

Woodstok
fonte

Respostas:

9
bind -P |grep unix-filename-rubout

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

bind \\C-b:unix-filename-rubout

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

user1338062
fonte
2
Para adicioná-la a ~/.inputrc, adicione uma linha como esta para o arquivo: "\C-b": unix-filename-rubout. Para ver o efeito, você terá que iniciar um novo shell bash (ou executar outro programa que utilize a biblioteca GNU readline).
Croad Langshan
11

Alt- Backspacee Ctrl- wsão comumente mapeados para backward-kill-word, o que faz isso. Se você quiser descobrir para o que ele está mapeado no seu sistema (se houver), execute bind -P | grep '^backward-kill-word'.

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

l0b0
fonte
Mas isso vai matar a palavra inteira .. Eu quero matar apenas até a última barra
woodstok
Ele remove apenas a última barra aqui. Barra é um dos separadores de palavras padrão. Tem certeza de que está usando o Bash?
L0b0 11/06/2013
Meu mal .. Alt-Backspace remove até a última barra. Qual é a diferença entre ALt-BackSpace e Ctrl-W?
woodstok
3
Ctl-w normalmente está vinculado a unix-word-rubout: Mate a palavra por trás do ponto, usando o espaço em branco como um limite de palavra.
Barmar
2
Isso não funciona exatamente. "As palavras são compostas por caracteres alfanuméricos (letras e dígitos)". Por isso, vai parar em muito mais do que apenas barras. O padrão não acoplado unix-filename-rubouté um pouco melhor, pois para no espaço em branco e barra.
Sparhawk 04/04
6

Coloque isso no seu .inputrce inicie um novo shell:

C-b:unix-filename-rubout

Ctrl- bagora apaga para trás para a próxima barra.

Nirvana!

Não se esqueça Ctrl- XCtrl- Einiciará seu editor para que você possa editar confortavelmente uma linha de comando complicada.

Greg Bell
fonte