Suppression de la ligne de lecture Bash jusqu'à la barre oblique précédente


15

En mode bash emacs, est-il possible de supprimer jusqu'au caractère barre oblique précédent? Par exemple, si j'ai entré la commande cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_pathet que je souhaite simplement supprimer le. reallylongincorrectfolderY a-t-il un raccourci? C'est un scénario très comman pour moi en bash. Quelque chose comme dF<char>dans vi?

Réponses:


9
bind -P |grep unix-filename-rubout

Pour tester la liaison de touches avec par exemple. Ctrl- b:

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

Pour une utilisation permanente, ajoutez-le à ~/.inputrc


2
Pour l' ajouter à ~/.inputrc, ajouter une ligne comme celui - ci à ce fichier: "\C-b": unix-filename-rubout. Pour voir l'effet, vous devrez démarrer un nouveau shell bash (ou exécuter un autre programme qui utilise la bibliothèque GNU readline).
Croad Langshan

11

Alt- Backspaceet Ctrl- wsont généralement mappés backward-kill-word, ce qui fait cela. Si vous souhaitez savoir à quoi il est mappé sur votre système (le cas échéant), exécutez bind -P | grep '^backward-kill-word'.

Comme expliqué par @Barmar , ceci est différent de unix-word-rubout, ce qui supprime la limite d'espace précédente.


Mais cela tuera le mot entier .. Je veux tuer seulement jusqu'à la dernière barre oblique
woodstok

Il n'est supprimé que jusqu'à la dernière barre oblique ici. La barre oblique est l'un des séparateurs de mots par défaut. Êtes-vous sûr que vous utilisez Bash?
l0b0

Mon mauvais .. Alt-Backspace le supprime jusqu'à la dernière barre oblique. Quelle est la différence entre ALt-BackSpace et Ctrl-W?
woodstok

3
Ctl-w est normalement lié à unix-word-rubout: Tuez le mot derrière le point, en utilisant un espace blanc comme limite de mot.
Barmar

2
Cela ne fonctionne pas exactement. "Les mots sont composés de caractères alphanumériques (lettres et chiffres)". Par conséquent, cela s'arrêtera bien plus que de simples barres obliques. La valeur par défaut non liée unix-filename-ruboutest légèrement meilleure, car elle s'arrêtera à l'espace blanc et se coupera.
Sparhawk

6

Mettez ceci dans votre .inputrcet lancez un nouveau shell:

C-b:unix-filename-rubout

Ctrl- befface maintenant vers l'arrière jusqu'à la prochaine barre oblique.

Nirvana!

N'oubliez pas Ctrl- XCtrl- Elancera votre éditeur afin que vous puissiez éditer une ligne de commande compliquée confortablement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.