Czy istnieje sposób przejścia do wcześniejszej części wiersza polecenia w terminalu Mac?

9

Często zdarza mi się pisać długie polecenia w powłoce bash - rzeczy z wieloma argumentami, adresami internetowymi, trasami itp. Od czasu do czasu zdaję sobie sprawę, że zapomniałem, powiedzmy, umieścić „bundle exec” na początku polecenia, źle napisałem coś lub zapomniałem cytatów. Lub coś tak prostego jak wstawienie „cd” zamiast „vim”.

W ten sposób zaczyna się żmudny proces przytrzymywania lewego klawisza strzałki, dopóki nie wrócę do początku polecenia.

Czy jest jakiś sposób, aby ponownie przejść na początek linii?

GlyphGryph
źródło
2
Możesz pozbyć się domyślnej aplikacji terminalowej i pobrać iTerm
Clement Herreman
Dlaczego? Właśnie sprawdziłem i wydaje się, że zachowuje się prawie tak samo. (Klucz domowy działa teraz, ale ponieważ mam inne klucze, to tak naprawdę nie ma znaczenia). Co oferuje, dzięki czemu warto ponownie wykonać wszystkie moje ustawienia, konfiguracje i zadania, a co nie?
GlyphGryph
To wydaje się być czymś, co można skonfigurować za pomocą .inputrc
Rob
Ponadto, aby przeskoczyć jedno słowo na raz, użyj ⌥B i ⌥F, aby przeskakiwać odpowiednio do przodu i do tyłu.
fideli,
@fideli, ale tylko jeśli włączysz opcję „Użyj opcji jako klawisza meta”. Zauważ, że od Mac OS X Lion 10.7 domyślna mapa ustawień terminala mapuje Option-Strzałka w lewo / Strzałka w prawo do Esc-b / f, więc konfiguracja nie jest wymagana.
Chris Page

Odpowiedzi:

12

Oprócz ^ A i ^ E możesz to zrobić

  • Esc- baby cofnąć się o jedno słowo
  • Esc- fprzeskoczyć o jedno słowo do przodu
  • Ctrl- baby cofnąć się o jedną postać
  • Ctrl- faby przejść o jedną postać do przodu

Zobacz instrukcję bash, aby uzyskać informacje na temat poruszania się .

Glenn Jackman
źródło
Warto zwrócić uwagę - pochodzi od Emacsa, a dodając emacsopcję do swoich skorupek, możesz uzyskać więcej.
TC1,
6

Możesz użyć poleceń Emacsa, np .:

  • ctrl-A, aby przejść do początku wiersza poleceń
  • ctrl-E, aby przejść do końca wiersza polecenia

To jest bash, nie dotyczy Maca.

mouviciel
źródło
3
set -o vi

Następnie Escnastępuje

^początek linii $koniec linii bjedno słowo backword wjedno słowo do przodu

kizzx2
źródło
Jestem dość wielkim fanem Vima, więc zasada twojej odpowiedzi jest dla mnie świetna, ale modalna edycja wiersza poleceń może być nieco myląca dla OP, szczególnie bez wzmianki o tym, jak wrócić do pisania! Wróć do trybu wstawiania, używając i(wstaw), aby pisać przed kursorem lub a(dodaj), aby pisać po kursorze.
Cascabel
Używam vi jako mojego głównego edytora tekstu od dziesięcioleci, ale nadal wolę powiązania klawiszy emacsa dla mojej powłoki.
Keith Thompson
W rzeczywistości OP używa vima do edycji tekstu, więc wiedza, że ​​możesz ustawić standardy vi, jest niezwykle przydatna. Wielkie dzięki!
GlyphGryph
@Kieth Thompson: Kiedyś myślałem tak samo. Pomyślałem, że shell nie miesza się dobrze z tym trybem przełączania rzeczy (jak irytujący vklawisz w trybie vi). Ale po pewnym czasie właśnie zostałem zainfekowany
vimem,
1

To nie odpowiada na twoje pytanie, ale w niektórych przypadkach może rozwiązać Twój problem.

W bashtym !!tokena jest podstawiony przez poprzedniego polecenia. Jeśli więc zapomnisz dodać coś na początku polecenia (jak sudo), możesz zrobić coś takiego

# ./super_secret_command --with-args
=> ACCESS DENIED

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED
Sam
źródło
0

Możesz skonfigurować zwykłe Ctrl/Opt+Left/Rightskróty do użytku w terminalu. W ten sposób nie musisz wszystkiego uczyć się ponownie podczas korzystania z terminalu.

Otwórz Terminal »Preferencje…» Ustawienia »(wybierz profil)» Klawiatura .

Tam przypisz następujące skróty:

  • Control + Cursor Left: Wyślij ciąg \033[1~do powłoki
  • Control + Cursor Right: Wyślij ciąg \033[4~do powłoki
  • Option + Cursor Left: Wyślij ciąg \033[5Ddo powłoki
  • Option + Cursor Right: Wyślij ciąg \033[5Cdo powłoki

Lubię też następujące ( Fn + Left/Right):

  • Home: Wyślij ciąg \033[1~do powłoki
  • End: Wyślij ciąg \033[4~do powłoki

wprowadź opis zdjęcia tutaj

Daniel Beck
źródło
Na Lion ⌥ ← i ⌥ → są domyślnie powiązane M-bi M-f. I ⌃ ← i ⌃ → są domyślnymi skrótami do zmiany spacji.
Lri
0

Potrzebowałem tego w Cygwin, a nie na Macu, ale dodanie następujących ~/.inputrcmoże też pomóc:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 
Tomek
źródło
0

Nie jestem użytkownikiem Maca, ale co z Homekluczem? Działa to dobrze na terminalu Linux.

m0skit0
źródło
1
Nie, to przewija do góry okna terminala.
GlyphGryph
Domyślnie Home i End przewijają widok, który jest standardowym zachowaniem Maca. Domyślnie Shift-Home i Shift-End wysyłają odpowiednio „ESC [H” i „ESC [F”. Wszystkie można dostosować w Terminalu> Preferencje> Ustawienia> [profil]> Klawiatura .
Chris Page
0

Najlepszym sposobem na poruszanie się po linii poleceń w Mac OS X jest użycie mojego profilu: https://github.com/lingtalfi/mac-terminal-shortcuts

Zapewnia następujące (intuicyjne) skróty:

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
home: move to the beginning of the line
end: move to the end of the line    
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
molwa
źródło