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?


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.


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ż.


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
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.