Używanie Ctrl lub Alt AND i backspace, aby usunąć ostatnie słowo w Bash

17

W Linuksie zwykłem naciskać Ctrl- Backspaceaby usunąć ostatnie słowo, ale nie wiem, jak to zrobić w terminalu Bash.

W OS XI użyj Alt- Backspaceaby zrobić to samo.

Czy istnieje jakiś sposób dokonywania Bash rozpoznać Ctrl- lub Alt- Backspacekombinacji klawiszy, aby usunąć ostatnie słowo?

W systemie Linux używam terminatorjako emulatora terminala, w systemie OSX używam iTerm2.

licorna
źródło
1
Alt-⌫ aka Alt- ← aka Alt-Backspace działa dla mnie idealnie. Używam Terminatora 0.93.
Teddy

Odpowiedzi:

31

Zawsze możesz użyć Ctrl- W. Usuwa słowo przed kursorem i działa w każdym Bash.

Zobacz tutaj listę skrótów klawiaturowych Bash .

slhck
źródło
1
Wow, mogło to zmienić sposób, w jaki zawsze używam terminala. Dzięki!
David
4
To nie odpowiada na pytanie
Sel
5

Musisz tylko ustawić Option jako klucz Meta w preferencjach iTerm ( Profile »Klucze ).

backward-kill-wordjest Meta-Ruboutdomyślnie związany (tzn. Opt-Backspace).

Ta sama opcja istnieje (choć mniej elastyczna) w aplikacji Apple Terminal.app.

Daniel Beck
źródło
2
W rzeczywistości musisz użyć ustawienia „+ Esc”. Tylko ustawienie go na „działa jak: Meta” powoduje, ?że zamiast słowa zostanie usunięte wydrukowane.
slhck 13.06.11
@slhck Nie dla mnie. Ale skoro programiści i tak to zalecają, nie może to być złą rzeczą.
Daniel Beck
2

W terminatorze możesz użyć następującej „ wtyczki ” wraz z

[keybindings]
    kill_word = <Control>BackSpace

w twoim pliku konfiguracyjnym. Będzie to mapa Ctrl- Backspacedo ESCDEL, kolejny shorcut usunąć ostatnie słowo.

OlivierBlanvillain
źródło
Niestety przestało to działać w terminatorze 1.9. Czy mógłbyś podać poprawkę przypadkiem?
Sel
1
Przepraszam, przestałem używać terminatora dawno temu ...
OlivierBlanvillain 19.04.17
2

Możesz utworzyć plik .inputrcw swoim katalogu domowym i dodać tę zawartość do:

"\C-h": backward-kill-word
Sel
źródło
1
Zauważ, że ta i C-wzaakceptowana odpowiedź różnią się tym, co uważa się za „słowo”. C-wusunie się z pozycji kursora, dopóki nie napotka znaków spacji, a następnie spacji (tj. "this is a/se=weird |test"gdzie |znaczniki pozycja kursora da miejsce "this is test") W przeciwieństwie do tego, C-hpowiązanie tutaj (które można powiązać za pomocą bind '"\C-h": backward-kill-word"a .bashrc) dałoby "this is a/se= test", ponieważ zasadniczo ogranicza słowa do tego, co zrobiłaby zmienna bash, a nie tylko spacje.
jeremysprofile
0

Możesz po prostu użyć Alt- DELzamiast normalnego Strg- DEL.

Luca Steeb
źródło