Terminal Mac OS X: Opcja mapowania + usuwanie do „słowa usuwania wstecz”

232

Próbowałem zmapować go w Preferencjach -> Ustawienia -> Klawiatura, ale w polu kombi „klucz” znajduje się tylko „usuń do przodu”, ale nie „usuń”. Z drugiej strony moja klawiatura ma tylko opcję „usuń” i nie ma opcji „usuń do przodu”!

Czy można to zrobić inaczej niż w preferencjach?

ibz
źródło
Czy masz na myśli „backspace delete word”? Nie znam żadnej najnowszej klawiatury Apple, która ma klawisz usuwania.
Sören Kuklau
Przez „słowo do tyłu wstecz” rozumiem dokładnie to - aby usunąć całe słowo, zaczynając od kursora do tyłu. :) Ostatni Macbook ma klucz oznaczony „usuń”, ale działa jak backspace.
ibz
mam do czynienia z tym samym problemem. klawiatura ma funkcję usuwania wstecz, ale nie może być używana jako powiązanie w Terminal.app.
knoopx,
Dla mnie twoje pytanie zasługuje na miliony pozytywnych opinii. Bardzo mi pomogło. Wcześniej byłem Ubuntu. To ułatwiło mi także życie w Mac OS. Dzięki.
doptimusprime

Odpowiedzi:

424

Włącz klawisz opcji jako klawisz meta

  1. Idź do Terminal> Preferences> Profiles>Keyboard
  2. Sprawdzić Use option key as meta key.

Wizerunek

Na macOS High Sierra 10.13.6, przechwycony 23 października 2018 r.

Ilustracja okna przełączania klawisza opcji jako klawisza meta

Notatki

Wiele aplikacji (w tym bash i tcsh) traktuje Meta-Delete jako „słowo usuwania wstecz”.

Andru Luvisi
źródło
32
To jest w Preferencje terminalu> ustawienia> klawiatura, na dole.
Jon
16
Dlaczego to nie jest domyślne ?!
Ross Hambrick
8
W Yosemite to ustawienie jest teraz w Preferencje -> Profile -> Klawiatura. Wygląda na to, że musisz zmienić / ustawić dla każdego profilu.
palimpsestor
6
W klawiaturach poza USA klucz opcji jest często potrzebny do uzyskania określonych znaków (np. Potok „|” jest dość ważny w powłoce). Czy w takim przypadku <Esc> bi <Esc> f wymienione w innych odpowiedziach są prawdopodobnie najlepszym rozwiązaniem?
Touko
8
Niestety, przynosi to efekt przeciwny do zamierzonego dla programistów z zagranicznymi klawiaturami, którzy muszą użyć klawisza opcji, aby uzyskać specjalne symbole, takie jak {, ponieważ to nie zadziała, gdy klawisz opcji będzie używany jako klawisz meta.
Magne
74

Terminal OS X uruchamia bash, który obejmuje obsługę readline. Postępuj zgodnie z radą Glomka i powiedz terminalowi, aby używał opcji jako klawisza meta (lub użyj Esc), a następnie masz kilka przydatnych opcji: Ctrl+ wusuwa poprzednie słowo (podobnie jak Meta + usuwa, jak wspomniano), ale możesz także użyć Meta + f i Meta + b, aby przechodzić do przodu i do tyłu przez słowa, Ctrl+ ai Ctrl+ edo początku i końca linii, Ctrl+ kusuń (zabij) od kursora do końca linii i wiele innych.

Zobacz http://www.bigsmoke.us/readline/shortcuts, aby znaleźć ładną małą tabelę referencyjną.

nadafigment
źródło
3
Jak to jest „przydatne”? Reszta systemu używa deletekwalifikatorów do usuwania słów.
idrougge 28.07.17
Czy można również mieć opcję „usuń linię”?
wenbert
1
Readline jest świetny, ale to nie pomaga OP. Ctrl + w usuwa WORD (oddzielone spacją), a nie słowo (oddzielone interpunkcją + białą spacją). Po ustawieniu kursora na końcu cat .git/refs/headsCtrl-w daje wynik cat. Meta + usuń wyniki wcat .git/refs/
idbrii
@nadafigment, „a” i „e” oznacza?
Pacerier
63

Usuń słowo wracając:

Ctr-w.

Shai
źródło
2
dobrze po przeczytaniu tego dowiedziałem się, że „usuń słowo do przodu” to ctrl + k (metodą prób i błędów). teraz zastanawiam się, dlaczego jest tak mało dokumentacji na ten temat.
zwycięzca n.
8
Ctr-k usuwa wszystko z przodu, a nie tylko jedno słowo, nie?
Shai,
to działa na moim komputerze Mac. czy to działa również na Ubuntu Linux?
user391339,
1
Ctrl + w usuwa WORD (oddzielone spacją), a nie słowo (oddzielone interpunkcją + białą spacją). Po ustawieniu kursora na końcu cat .git/refs/headsCtrl-w daje wynik cat. Meta + usuń wyniki wcat .git/refs/
idbrii
24

Domyślnie meta backspace robi wsteczne słowo w większości powłok. Jeśli naciśniesz klawisz Escape, a następnie klawisz Backspace, prawie wszystko działa.

Dustin
źródło
3
Fantastyczne, które nie wymaga dodatkowej konfiguracji. Zauważam, <Esc> ba <Esc> ftakże pracuję, aby skoczyć do tyłu lub do przodu o jedno słowo.
joeytwiddle
1
Lubię <ALT> + STRZAŁKA więcej. ESC nie pozwala na ciągłe klikanie b lub f.
Vitali Pom
1
Używam <ALT> + STRZAŁKI, aby się poruszać, ale okazuje się, że nie ma sposobu, aby usunąć w podobny sposób. Podane powyżej podejście CTRL + W nie zatrzymuje się na znakach innych niż słowo w taki sam sposób, jak <ALT> + STRZAŁKA, więc usuwa wszystko aż do białych znaków. Doceniony zostanie jakikolwiek sposób usunięcia przy użyciu podobnego wykrycia granicy, jak <ALT> + STRZAŁKA
Rene Wooller,
18

⌃W(Ctrl + W) to nie to samo, co meta + delete (ESC + delete, jeśli nie zaznaczyłeś opcji Użyj jako meta-klucza) meta + delete będzie traktowane / _jako separator słów, w którym ^Wspacja będzie traktowana jako separator.

np. używając ESC + Bakcspace na (kursor na końcu)

rm /dira/dirb/file1

daje

rm /dira/dirb/

podczas gdy ^ W na tym samym da

rm

Dlatego lepiej jest użyć \ 033 \ 177 zamiast ^ W podczas definiowania modyfikacji profilu terminala. W ten sposób naprawdę mapujesz ⌥⌫ do tego, co robi esc ⌫ i ciągle masz ^ W, aby wymazać słowo na podstawie separatora spacji.

Chciałbym móc opublikować zdjęcie, jak to zrobić, ale jako początkujący nie mogę.

zapoznaj się z komentarzem Bouke, aby zobaczyć, jak zmodyfikować profil terminala.

Stephane Gasparini
źródło
5
Dla tych, którzy chcą to zrobić iterm2, możesz przejść do Preferencje> Klucze> dodać Mapowanie klawiszy, ⌥⌫aby wysłać kody szesnastkowe 0x1B 0x7F. 🍻
qix
Jak dowiedziałeś się, że \033\177właśnie tego chcesz użyć do „usunięcia części słowa”?
adiabatic
w rzeczywistości wystarczy nacisnąć wybraną sekwencję klawiszy w oknie dialogowym Preferencje terminala. Preferencje → Profile → karta Klawiatura → przycisk + następnie wybierz modyfikator „opcja” i naciśnij klawisz „⌫ usuń”, następnie zaznacz pole tekstowe i naciśnij klawisz Escape, a następnie naciśnij klawisz press i gotowe. Esc + ⌫ robi to samo co ⌥⌫
Stephane Gasparini
14

W profilu terminalu możesz powiązać ⌥⌫ (opcja + usuń) z ⌃W (kontrola + W), więc działa podobnie do innych aplikacji.

Ustawienia klawiatury profilu terminala

Bouke
źródło
stty musi mieć mapowane ^ w na werase (zachowanie domyślne), aby to działało. Użyj stty -a w wierszu poleceń, aby zobaczyć, jak są ustawione odwzorowania.
natersoz
4

Skróty do edycji poleceń

Ctrl + a - przejdź do początku wiersza poleceń

Ctrl + e - przejdź do końca wiersza poleceń

Ctrl + k - usuń od kursora do końca wiersza poleceń

Ctrl + u - usuń z kursora na początek wiersza poleceń

Ctrl + w - usuń od kursora do początku słowa (tj. Usuń jedno słowo wstecz)

Ctrl + y - wklej słowo lub tekst wycięty za pomocą jednego ze skrótów usuwania (takiego jak powyższy) za kursorem

Ctrl + xx - przejście między początkiem wiersza poleceń a bieżącą pozycją kursora (iz powrotem)

Alt + b - przejście o jedno słowo do tyłu (lub przejście do początku słowa, na którym aktualnie znajduje się kursor)

Alt + f - przejście o jedno słowo do przodu (lub przejście do końca słowa, na którym aktualnie znajduje się kursor)

Alt + d - usuń do końca słowa zaczynającego się od kursora (całe słowo, jeśli kursor znajduje się na początku słowa)

Alt + c - wielkie litery zaczynają się od kursora (całe słowo, jeśli kursor znajduje się na początku słowa)

Alt + u - tworzy wielkie litery od kursora do końca słowa

Alt + l - tworzy małe litery od kursora do końca słowa

Alt + t - zamień bieżące słowo na poprzednie

Ctrl + f - przesuń o jedną postać do przodu

Ctrl + b - przesuń o jedną postać do tyłu

Ctrl + d - usuń znak pod kursorem

Ctrl + h - usuń znak przed kursorem

Ctrl + t - zamień znak pod kursorem na poprzedni

Skróty przywoływania poleceń

Ctrl + r - przeszukaj historię do tyłu

Ctrl + g - wyjście z trybu wyszukiwania historii

Ctrl + p - poprzednie polecenie w historii (tj. Przejrzyj historię poleceń)

Ctrl + n - następne polecenie w historii (tzn. Przejdź do przodu historii poleceń) Alt +. - użyj ostatniego słowa poprzedniego polecenia

Skróty kontroli poleceń

Ctrl + l - wyczyść ekran

Ctrl + s - zatrzymuje wyjście na ekran (w przypadku długiego uruchamiania pełnego polecenia)

Ctrl + q - zezwala na wyjście na ekran (jeśli wcześniej zatrzymano przy użyciu polecenia powyżej)

Ctrl + c - kończy polecenie

Ctrl + z - zawiesza / zatrzymuje polecenie

Polecenia Bash Bang (!) Bash ma również kilka przydatnych funkcji, które używają! (bang), aby umożliwić ci wykonywanie funky z poleceniami bash.

!! - uruchom ostatnią komendę! Bla - uruchom najnowszą komendę, która zaczyna się na 'bla' (np.! Ls)

! blah: p - wypisuje polecenie, które uruchomi! blah (dodaje również jako najnowsze polecenie w historii poleceń)

! $ - ostatnie słowo poprzedniego polecenia (takie samo jak Alt +.)

! $: p - wypisz słowo, które zastąpiłoby! $

! * - poprzednie polecenie z wyjątkiem ostatniego słowa (np. Jeśli wpiszesz „_find somefile.txt /”, wtedy! * Da ci „_find somefile.txt”)

! : p - wydrukuj co! zastąpiłby

Curtis M.
źródło
2

Po Natural Text Editingwłączeniu ustawienia wstępnego w Profil -> Klucze. Możesz po prostu usunąć słowo

  • Wstecz z alt + delete
  • Naprzód z fn + alt + delete
Anthony Artemiev
źródło