Jaki jest skrót do usunięcia słowa „do przodu” w terminalu unixowym?

14

Robię Ctrl+Ww terminalu mac, aby usunąć słowo (usuwa miejsce, w którym znajduje się kursor na początku słowa)

Jak zrobić odwrotnie - usuwa miejsce, w którym znajduje się kursor do końca słowa?

Poślizg
źródło

Odpowiedzi:

14

Zależy to od powłoki i jej aktywnego trybu edycji wiersza poleceń.

W przypadku powłoki z trybem edycji wiersza poleceń Emacsa ( set -o emacsw niektórych powłokach), użyj Alt+D(to nie działa na macOS z jakiegokolwiek powodu, ale drukuje znak , użyj Escdzamiast tego).

W przypadku powłoki z trybem edycji wiersza poleceń Vi ( set -o viw niektórych powłokach) użyj Escdw( działa to również w systemie macOS).

Kusalananda
źródło
Jednak tylko w Zsh Meta-D usuwa ten sam typ słowa, co Ctrl-W (puste). W bashw vitrybie, można użyć dWdo usunięcia tych
Stéphane Chazelas
1
@ StéphaneChazelas Tak, oni (dwa keycombos) mają odmienny pogląd na to, co stanowi „słowo”.
Kusalananda
Możesz zaznaczyć opcję „użyj opcji jako meta” w preferencjach klawiatury terminala, aby działała.
Józef Legény
Zarówno Esc + D, jak i Alt + D działają w terminalu xfce4 0.6.3 .
neverMind9,
1

W przypadku dyscypliny linii tty ^Wusuwa poprzednie słowo rozdzielane spacjami .

W viedytorze w trybie wstawiania ^Wusuwa wstecz do początku pierwszej sekwencji alnums lub non-alnums ( foo-+-bar.. baznajpierw usuwa najpierw baz, potem .., potem bar, potem -+-, potem foo).

W emacsedytorze ^Wusuwa z pozycji kursora do znaku (ustawionego za pomocą Ctrl+Space).

Niektóre edytory liniowe, takie jak readline(używane przez bash, gdb...), zle(używane przez zsh) pdksh„s, gdy w vitrybie, jak zachowywać visię w tym względzie, a kiedy w emacstrybie zachowuje się jak dyscypliny linii tty (nie emacs).

libedit(stosowany pociskami BSD (opcjonalnie) dash) tcsh, AT & T ksh, w emacstrybie pracy zachowują się jak emacsw którym ^WUsuwa na znak (na początku na początku bufora).

Aby usunąć słowo do przodu, w viedytorze, zrobiłbyś to w trybie komend ( normalnym ) z, dwaby usunąć na początku następnej sekwencji alnum lub nie-alnum (lub na końcu wiersza) i dWusunąć do kolejna sekwencja niepustych znaków (wisiorek ^Wdyscypliny linii tty).

W emacsedytorze linii Meta-Dusuwałby do końca następnej sekwencji znaków alnum. Operatory ruchu słowa ( Meta-B, Meta-F) zachowują się podobnie.

edytory wiersza poleceń, gdy są w vitrybie, zachowują się tak vi, ale w emacstrybie masz dwie główne szkoły: tcshszkołę i kshszkołę.

kshSzkoła ( readline, ksh, yash) zachowuje się głównie jak emacs( fish„s zachowanie jest nieco inny, w jaki traktuje non-alnum, znaki inne niż białe znaki zarówno emacsi vitryb).

W tcshszkole ( tcsh, libedit, zsh), wnioski są oparte na słowo białych słów oddzielonych więc są zgodne z tty linia dyscyplina użytkownika ^Ww tym zakresie.

W zshzachowanie można dostosować za pomocą różnych stylów słów dla wszystkich widżetów ruchu słów.

Dla readlinemożna uzyskać tcshw szkole (i mają Meta-Dusunąć samego rodzaju słowa jak Ctrl-Wrobi), dodając do swoich ~/.inputrc:

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

Lub, z drugiej strony, dopasuj ^Wdo innych wyrazów widgetów ruchu (zachowaj się jak Meta-Backscape) za pomocą:

set keymap emacs
"\C-W": backward-kill-word

Jeśli chodzi o Metaklucz, zobacz tam .

Stéphane Chazelas
źródło
-1

W systemie Linux spróbuj Ctrl+kusunąć z miejsca, w którym kursor znajduje się na końcu słowa.

Istnieje kilka innych skrótów wymienionych poniżej (działających w systemie Linux):

  1. Ctrl+e -> Pobiera kursor na końcu słowa.
  2. Ctrl+t -> Zmień pozycję alfabetów.
  3. Ctrl+y -> dodaje postfiks „hh” do bieżącego słowa.
  4. Ctrl+u -> Usuwa całą linię.
  5. Ctrl+o -> Działa tak samo jak klawisz Enter.
  6. Ctrl+p -> Działa tak samo jak przycisk strzałki w górę.
  7. Ctrl+a -> Ustawia kursor w pozycji początkowej polecenia.
  8. Ctrl+d -> Zamyka terminal.
  9. Ctrl+f -> Przesuwa kursor o jeden znak do przodu.
  10. Ctrl+h -> Działa tak samo jak klawisz Backspace.
  11. Ctrl+j -> Działa tak samo jak klawisz Enter.
  12. Ctrl+m -> Działa tak samo jak klawisz Enter.
  13. Ctrl+b-> Działa tak samo jak klawisz strzałki w prawo. 14 Ctrl+4 -> Usuwa słowo
SMshrimant
źródło
3
Ctrl+kusuwa się do końca linii . Ctrl+uusuwa całą linię (jeśli kursor znajduje się na końcu). Ctrl+dwysyła EOF. Ctrl+eidzie na koniec linii itp.
Kusalananda
Ctrl + y służy do wklejania, lub szarpania, ostatniej rzeczy zapisanej w schowku, w twoim przypadku to prawdopodobnie „hh”. Jak myślisz, dlaczego na świecie istniałby skrót klawiaturowy do poprawiania danego słowa za pomocą liter „hh”? Jak by to się przydało?
bmcentee148