Bash readline eliminazione fino alla barra precedente


15

In modalità bash emacs, c'è comunque modo di eliminare fino al carattere barra precedente? Ad esempio, se ho inserito il comando cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_pathe voglio semplicemente eliminare il file. reallylongincorrectfolderC'è qualche collegamento? Questo è uno scenario molto comune per me a Bash. Qualcosa come dF<char>in vi?

Risposte:


9
bind -P |grep unix-filename-rubout

Per testare l'associazione dei tasti con es. Ctrl- b:

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

Per un uso permanente, aggiungilo a ~/.inputrc


2
Per aggiungerlo a ~/.inputrc, aggiungere una linea come questa al file: "\C-b": unix-filename-rubout. Per vedere l'effetto, dovrai avviare una nuova shell bash (o eseguire qualche altro programma che utilizza la libreria readline GNU).
Croad Langshan,

11

Alt- Backspacee Ctrl- wsono comunemente mappati su backward-kill-word, il che lo fa. Se vuoi scoprire a cosa è mappato sul tuo sistema (se non altro), esegui bind -P | grep '^backward-kill-word'.

Come spiegato da @Barmar , questo è diverso da quello unix-word-ruboutche rimuove dal limite di spazio precedente.


Ma questo ucciderà l'intera parola ... Voglio uccidere solo fino all'ultima barra
woodstok l'

Rimuove solo fino all'ultima barra qui. La barra è uno dei separatori di parole predefiniti. Sei sicuro di usare Bash?
l0b0

Mio cattivo .. Alt-Backspace lo rimuove fino all'ultima barra. Qual è la differenza tra ALt-BackSpace e Ctrl-W?
woodstok l'

3
Ctl-w è normalmente legato a unix-word-rubout: uccidi la parola dietro il punto, usando lo spazio bianco come confine di parola.
Barmar,

2
Questo non funziona esattamente. "Le parole sono composte da caratteri alfanumerici (lettere e cifre)". Quindi si fermerà a molto più di semplici tagli. Il valore predefinito non associato unix-filename-ruboutè leggermente migliore, dal momento che si fermerà nello spazio bianco e nella barra.
Sparhawk,

6

Inseriscilo nel tuo .inputrce avvia una nuova shell:

C-b:unix-filename-rubout

Ctrl- bora cancella all'indietro la barra successiva.

Nirvana!

Non dimenticare Ctrl- XCtrl- Eavvierà il tuo editor in modo da poter modificare comodamente una riga di comando complicata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.