Bash readline usuwany do poprzedniego slash

15

Czy w trybie bash emacs można usunąć aż do poprzedniego znaku ukośnika? Na przykład, jeśli wprowadziłem polecenie cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_pathi chcę po prostu usunąć reallylongincorrectfolder.Czy jest jakiś skrót? To jest dla mnie bardzo powszechny scenariusz. Coś jak dF<char>w vi?

woodstok
źródło

Odpowiedzi:

9
bind -P |grep unix-filename-rubout

Aby przetestować wiązanie klawiszy za pomocą np. Ctrl- b:

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

Do stałego użytku dodaj go do ~/.inputrc

użytkownik1338062
źródło
2
Aby dodać go do ~/.inputrc, dodać taką linię do tego pliku: "\C-b": unix-filename-rubout. Aby zobaczyć efekt, musisz uruchomić nową powłokę bash (lub uruchomić inny program korzystający z biblioteki readline GNU).
Croad Langshan,
11

Alt- Backspacei Ctrl- wsą zwykle mapowane backward-kill-word, co czyni to. Jeśli chcesz dowiedzieć się, na co jest mapowane w systemie (jeśli w ogóle), uruchom bind -P | grep '^backward-kill-word'.

Jak wyjaśniono @Barmar , różni się to od unix-word-rubout, która usuwa poprzednią granicę przestrzeni.

l0b0
źródło
Ale to zabije całe słowo. Chcę zabić tylko do ostatniego cięcia
woodstok
Usuwa tylko ostatni slash tutaj. Ukośnik jest jednym z domyślnych separatorów słów. Czy na pewno używasz Bash?
l0b0
Mój zły ... Alt-Backspace usuwa go do ostatniego ukośnika. Jaka jest różnica między ALt-BackSpace i Ctrl-W?
woodstok
3
Ctl-w jest zwykle związany z unix-word-rubout: Zabij słowo za punktem, używając białej spacji jako granicy słowa.
Barmar,
2
To nie do końca działa. „Słowa składają się ze znaków alfanumerycznych (liter i cyfr)”. Dlatego zatrzyma się na czymś więcej niż tylko cięciem. Domyślnie niezwiązane unix-filename-ruboutjest nieco lepsze, ponieważ zatrzyma się na spacji i ukośniku.
Sparhawk
6

Włóż to do swojego .inputrci uruchom nową powłokę:

C-b:unix-filename-rubout

Ctrl- bteraz usuwa wstecz do następnego ukośnika.

Nirwana!

Nie zapomnij Ctrl- XCtrl- Euruchomi edytor, abyś mógł wygodnie edytować skomplikowaną linię poleceń.

Greg Bell
źródło