Bash: usuń słowo przed kursorem

76

Rozważ następujący wiersz poleceń bash, gdzie ^ oznacza położenie kursora:

svn commit -m very/long/path/to/some/file "[bug 123456] Fix the pixel issue"
              ^

Chciałbym zatwierdzić inny plik z tą samą wiadomością. Jak mogę usunąć bieżące słowo, od położenia kursora do następnej spacji? Czy istnieje również skrót do usuwania wstecz, tworząc kursor do pierwszej spacji do tyłu?

Aktualizacja: ctrl + wusuwa do tyłu, ale który skrót usuwa jedno słowo do przodu?

Adam Matan
źródło
2
Ctrl ujest opcją kasowania od położenia kursora do początku ...
zwariowany o natty
23
Spróbuj alt + d, może to być przydatne, gdy ustawiony jest tryb edycji emacsa.
@ Mike jak włączyć tryb emacs?
Adam Matan,
@AdamMatan set -o emacsją włącza, ale zazwyczaj jest to ustawienie domyślne; jeśli nie, możesz umieścić tę linię w .bashrclub .bash_aliases, a następnie pobrać plik lub ponownie załadować terminal. Jednak skróty, do których możesz być przyzwyczajony w trybie vi, nie będą dostępne, chociaż takie jak ctrl + c, ponieważ nie są skrótami Bash.

Odpowiedzi:

56

Odpowiedziałem na podobne pytanie na unix.stackexchange.com :

Bash ma polecenia readline, które nie są domyślnie powiązane. Można je znaleźć na stronie : http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

Polecenie, którego szukasz, nazywa się „shell-backward-kill-word”. Najpierw musisz wybrać skrót. Użyjmy Crtl + p, ponieważ jest to „poprzednie polecenie” - to samo co strzałka w górę.

bind '"\C-p": shell-backward-kill-word'

Jedyna różnica polega na tym, że musisz użyć polecenia „shell-kill-word”, ponieważ chcesz usunąć do przodu.

Istnieje również polecenie „zabij słowo” za pomocą Meta+ dskrótu (spróbuj Esc+, djeśli nie masz klawisza Meta). Usunie tylko jedną część ścieżki naraz.

Nykakin
źródło
31
Alt-d działa dla mnie
Ricab
8
Ogólnie w świecie klawiatur, w których Meta nie istnieje, Alt = Meta.
Nate CK
W świecie, w którym masz wiele różnych klawiatur, wygodnym i dość użytecznym faktem jest to, że Esc jako prefiks działa również jako Meta.
tripleee
1
W skrócie, dodaj np. To do pliku $ HOME / .inputrc:, "\ew": shell-kill-word który spowoduje, że Alt-w przesyła słowo do przodu, podobnie jak CTRL-w wstecz usuwa słowo (i w przeciwieństwie do Alt-d, który przesyła usuwanie, ale zatrzymuje się na np. a / lub - i inne znaki)
użytkownik964970
7

Testowane zarówno esc+ di alt/ opt+ dna OSX Mavericks i pracują tam również.

visyoual
źródło
12
Option + ddaje mi ∂ na OSX
Ivan Balashov
4
-1 OSX to nie Ubuntu. Dodaj komentarz, ale to nie jest odpowiedź.
wjandrea
musisz najpierw włączyć pole wyboru „Użyj opcji jako klawisza meta” w preferencjach terminalu (profile -> zakładka klawiatury -> pole wyboru)
Nils Petersohn
control + dna komputerze Mac Sierra
mfink
2
@ IvanBalashov, jeśli go używasz, ustaw klucz let opt ​​jako esc +. W obszarze Profile> klucze
tessie