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?

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


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.