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.


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 .


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.


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.


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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.