Jak przesuwać kursor słowo po słowie w terminalu OS X

Znam kombinację Ctrl+A aby przejść do początku bieżącego polecenia i Ctrl+E aby przejść do końca.

Ale czy jest jakiś sposób, aby przeskoczyć słowo po słowie, jak Alt+/ w aplikacjach kakao?

Author: the Tin Man, 2008-09-17

17 answers

Po wyjęciu z pudełka możesz użyć dość dziwacznego Esc+F aby przejść do początku następnego słowa i Esc+B aby przejść do początku bieżącego słowa.

 590
Author: Kristian J.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-07 00:35:24

W systemie Mac OS X-następujące skróty klawiaturowe działają domyślnie. Należy pamiętać, że w preferencjach terminala (w zakładce klawiatura)

  • alt (⌥)+F aby przeskoczyć F lub przeskoczyć przez słowo
  • alt (⌥)+B aby przeskoczyć B ackward przez słowo

Zauważyłem, że domyślne powiązania klawiszy Emacsa dla prostej nawigacji tekstowej wydają się działać na powłokach bash. Możesz użycie

  • alt (⌥)+D aby usunąć słowo zaczynające się od bieżącej pozycji kursora
  • ctrl+A aby przejść do początku linii
  • ctrl+E aby przejść do końca linii
  • ctrl+K aby zabić linię rozpoczynającą się od pozycji kursora
  • ctrl+Y aby wkleić tekst z bufora kill
  • ctrl+R aby odwrócić wyszukiwanie poleceń wpisanych w przeszłość z twojej historii
  • ctrl+S to forward search (działa w zsh dla mnie, ale nie bash)
  • ctrl+F aby przejść do przodu przez znak
  • ctrl+B aby przesunąć do tyłu o znak
  • ctrl+W aby usunąć słowo do tyłu z pozycji kursora
 442
Author: Varun Katta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-26 20:26:38

Oto jak możesz to zrobić

Domyślnie Terminal ma te skróty do przesuwania (w lewo i w prawo) słowo po słowie:

  • esc+B (lewy)
  • esc+F (prawo)

Możesz skonfigurować alt+ oraz aby wygenerować te sekwencje dla ciebie:

  • Open Terminal preferences (cmd+,);
  • w zakładce Ustawienia wybierz klawiaturę i kliknij dwukrotnie ⌥ ←, jeśli tam jest, Lub dodaj, jeśli nie jest.
  • Ustaw modyfikator zgodnie z potrzebami i wpisz klawisz skrótu w polu: esc+B , generowanie tekstu \033b (nie można wpisać tego tekstu ręcznie).
  • Repeat for word-right (esc+F staje się \033f)
Możesz również skorzystać z tego wpisu na blogu w textmate:

Http://blog.macromates.com/2006/word-movement-in-terminal/

 289
Author: Fil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-17 09:27:07

Przełącz na iTerm2. Jest darmowy i o wiele ładniejszy niż zwykły stary terminal. Ma również dużo więcej opcji dostosowywania, takich jak skróty klawiaturowe.

Również podoba mi się, że można użyć cmd i 1-9, aby przełączać się między kartami. Spróbuj, a nigdy nie wrócisz do zwykłego terminala:)

Jak skonfigurować własne preferencje klawiatury w iterm2

  • Install iTerm2
  • Uruchom, a następnie przejdź do panelu preferencji.
  • wybierz klawiaturę zakładka profile
  • będziesz musiał albo skopiować profil do czegoś nowego, a następnie usunąć skróty klawiszy strzałek, takie jak ^+ prawo/Lewy lub jeśli nie zależy ci na kopii zapasowej po prostu usuń je z domyślnego profilu.
  • następnie upewnij się, że Twój zmodyfikowany profil jest zaznaczony (oznaczony gwiazdką)

Zdjęcie 1.png

  • Teraz wybierz zakładkę klawiatury (bardzo górny wiersz)

iTerm 2

  • Kliknij na plus przycisk do dodania nowego skrótu klawiaturowego
  • w pierwszym polu wpisz CMD+Strzałka w lewo
  • w drugim polu wybierz "Wyślij kod ucieczki"
  • w trzecim polu wpisz literę B

Zdjęcie 2.png

  • powtórz z żądanymi kombinacjami klawiszy. escape+B przesuwa jedno słowo w lewo, Ucieczka+F przesuwa jedno słowo w prawo.
  • możesz również skonfigurować cmd+d to Usuń słowo przed kursorem za pomocą escape+d

Często wciskam zły przycisk ( cmd / Kontrola / alt ) z klawiszem strzałek i tak mam moje kombinacje klawiszy strzałek z tych przycisków wszystkie ustawione, aby przeskoczyć do przodu i do tyłu słowa, Ale proszę zrobić to, co pasuje Ci najlepiej.

 173
Author: cwd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-02 15:12:33

Właściwie jest o wiele lepsze podejście. Opcja Hold ( alt na niektórych klawiaturach) i naciśnij klawisze strzałek w lewo lub w prawo, aby poruszać się za pomocą programu word. To proste.

Opcja
Opcja

Również ctrle przeniesie Cię na koniec linii i ctrla zabierze cię na początek.

 156
Author: mdubez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-26 20:22:58

Mam Alt+/ działanie: otwórz Preferences "Settings" Keyboard, ustaw pozycję option cursor leftna wyślij łańcuch do powłoki: \033b, i ustaw option cursor rightna wyślij łańcuch do powłoki: \033f. Można go również użyć do innych kombinacji klawiszy sterujących.

 79
Author: Peter Hilton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-07 00:44:35

Właściwie to zależy od tego, jakiej powłoki używasz, jednak większość powłok ma podobne wiązania. Wiązania, do których się odnosisz (np. Ctrl+A i Ctrl+E ) to wiązania, które znajdziesz w wielu innych programach i są używane od wieków, BTW działa również w większości aplikacji UI.

Oto wygląd domyślnych wiązań dla Basha:

Najważniejsze Skróty Klawiaturowe Bash

Należy również pamiętać, że można je dostosować. Musisz stworzyć / align = "left" / bash_key_bindings i umieścić go w moim katalogu domowym. Tam możesz ustawić kilka ogólnych opcji bash, a także ustawić wiązania klawiszy. Aby upewnić się, że są stosowane, musisz zmodyfikować plik o nazwie ".bashrc " , który bash odczytuje po uruchomieniu (musisz go utworzyć, jeśli nie istnieje) i wykonać następujące wywołanie:

bind -f ~/.bash_key_bindings

~ oznacza katalog domowy w bash, jak wspomniano powyżej, możesz nazwać plik, jak chcesz, a także umieścić go tam, gdzie chcesz tak długo, jak karmisz właściwą ścieżkę + nazwę do wiązania.

Pozwól, że pokażę Ci kilka fragmentów mojego .plik bash_key_bindings:

set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set show-all-if-ambiguous on
set bell-style none
set print-completions-horizontally off

Te po prostu ustawić kilka opcji(np. wyłączyć dzwonek; To wszystko można sprawdzić na stronie bash).

"A": self-insert
"B": self-insert
"C": self-insert
"D": self-insert
"E": self-insert
"F": self-insert
"G": self-insert
"H": self-insert
"I": self-insert
"J": self-insert

Te upewniają się, że same znaki nie robią nic, ale upewniają się, że znak jest "wpisany" (wkładają się do powłoki).

"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line
To dość interesujące. Jeśli wcisnę Ctrl+D (Wybrałem d dla delete), nic się nie dzieje. Ale jeśli następnie wpisać małe litery w, słowo po lewej stronie kursora jest usuwany. Jeśli jednak wpiszę wielkie litery, słowo po prawej stronie kursora zostanie zabite. To samo dotyczy l i L w odniesieniu do całej linii zaczynającej się od kursora. Jeśli wpiszę "a", cała linia zostanie faktycznie usunięta(wszystko przed i za kursorem).

Umieściłem przeskakując jedno słowo do przodu na Ctrl+F i jedno słowo wstecz na Ctrl+B

"\C-f": forward-word
"\C-b": backward-word

Jak widać, można zrobić skrót, który prowadzi do działania natychmiast, lub można zrobić jeden, który po prostu inits sekwencji znaków, a następnie trzeba wpisać jeden (lub więcej) znaków, aby spowodować, że akcja ma miejsce, jak pokazano w przykładzie powyżej.

Więc jeśli nie jesteś zadowolony z domyślnych wiązań, możesz je dowolnie dostosować. Poniżej znajduje się link do instrukcji bash, aby uzyskać więcej informacji.

 38
Author: Mecki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-12 15:32:14

Użyj naturalna Edycja tekstu preset!

Tutaj wpisz opis obrazka

Zasadniczo wiąże między innymi sekwencje kluczowe, Option + LeftArrow do ^[b sekwencji i Option + RightArrow do ^[f

To działa w fish i bash, a także w terminalu psql.

 26
Author: Dziamid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-07 16:03:55

Przytrzymaj klawisz Option i kliknij miejsce, w którym chcesz przesunąć kursor

 20
Author: Dan Alboteanu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-11 19:23:48

Jeśli jesteś użytkownikiem Vima, możesz wypróbować tryb vim Basha. Uruchom to lub umieść w swoim pliku ~/.bashrc:

set -o vi

Domyślnie jesteś w trybie wstawiania; naciśnij escape i możesz poruszać się tak, jak w Vimie w trybie normalnym, więc ruch za pomocą słowa To w lub b, a zwykłe klawisze ruchu działają również.

 16
Author: jches,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-11 23:03:08

Jeśli zaznaczysz Use option as meta key w zakładce klawiatura w preferencjach, to domyślne polecenia stylu Emacsa dla słowa do przodu i do tyłu oraz ⌥F (Alt+F ) oraz ⌥B (Alt+B ).

Polecam czytanie z Basha na z-Shell. Jeśli chcesz zwiększyć swoją sprawność bash / zsh!

 15
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-07 01:29:42

Od Mac OS X Lion 10.7, Terminal maps Opcja-Strzałka w Lewo / Prawo do Esc-b / f domyślnie, więc jest to teraz wbudowane dla bash i innych programów, które używają tych skrótów klawiszowych kompatybilnych z emacs.

 12
Author: Chris Page,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-12 01:03:03

W Bash są one związane z Esc-B i Esc-F . Bash ma wiele, wiele więcej skrótów klawiaturowych; spójrz na wyjście bind -p, aby zobaczyć, czym one są.

 8
Author: Andy Lynch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-07 01:29:38

Pod iterm2'S Preferences > Profile > Keys, klikasz + poniżej key Mappings i nagrywasz nowy skrót. Dla akcji Wybierz Send Escape Sequence i wpisz b lub f odpowiednio do tyłu i do przodu.

Gdy próbowałem nagrać jeden dla ( Ctrl+), zauważyłem w polu skrót klawiaturowy , że strzałka nigdy się nie pojawiła. Okazało się, że musiałem wyłączyć domyślne ustawienia systemowe Maca > klawiatura > skróty > Kontrola misji (Mission Control) najpierw zaczyna działać, ponieważ nadpisuje domyślne skróty iterm2. Powinna być również zgodna ze standardową aplikacją terminala.

Preferencje systemowe klawiatury

 7
Author: qix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-02 04:04:37

Zgodnie z wcześniejszą odpowiedzią, możesz dodać set -o vi w swoim ~/.bashrc, aby użyć vi/vim wiązania klawiszy, albo możesz dodać następującą część w .bashrc, aby przenieść za pomocą Ctrl i klawiszy strzałek:

# bindings to move 1 word left/right with ctrl+left/right in terminal, just some apple stuff!
bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
# bindings to move 1 word left/right with ctrl+left/right in iTerm2, just some apple stuff!
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

Aby rozpocząć efekt tych linii kodu, albo {[7] } albo rozpocząć nową sesję terminala.

 1
Author: Chinmay Chhajed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-13 10:37:26

Nowa odpowiedź dla użytkowników iTerm2 Build 3.3.4:

Krok 1: (macOS X) Preferencje systemowe > Klawiatura > karta skrótów > wybierz Mission Control ( lewy panel) > odznacz skróty oznaczone jako "Przesuń w lewo" i "przesuń w prawo"

Krok 2: (Iterm2 Build 3.3.4) Preferencje > Profile > wybierz * Default (lewy panel) > keys tab > Delete both "⌥ - > " and " ⌥ Set both" left Option (⌥) Key: "and" Right Option ( ⌥ ) Key: "to Esc +

No messing around with shell profili, bez bałaganu z gorszym terminalem maso (domyślnym), bez awkwards Esc + F / B, płukanie i powtarzanie bez sensu.

Załatwione!!!

Miłego czytania, moi drodzy Programiści!

 0
Author: Hang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-01 18:11:02

Z jakiegoś powodu opcja + strzałka mojego terminala nie działała. Aby to naprawić w systemie macOS 10.15.6, otworzyłem preferencje aplikacji terminal i musiałem ustawić wiązania.

Option-left = \033b
Option-right = \033e

Ustawienia klawiatury w aplikacji Mac terminal

Z jakiegoś powodu, {[1] } miałem został ustawiony \033f. Teraz, gdy jest naprawiony, mogę swobodnie pomijać słowa w termianl ponownie.

 0
Author: ubershmekel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-03 00:25:39