iTerm - przechodzenie o jedno słowo do tyłu i do przodu

164

Czy byłoby możliwe skonfigurowanie iTerm 2 do przewijania do tyłu i do przodu o jedno słowo w bieżącym tekście wiersza poleceń za pomocą skrótu klawiaturowego?

syntagma
źródło
14
To tak naprawdę nie odpowiada na pytanie, ale jest istotne: możesz kliknąć i kliknąć dowolne miejsce w wierszu polecenia, aby przesunąć kursor tam.
David Winiecki,
Downvoting nieprzyjęcia poprawną odpowiedź
PI-
@ Pi- Dlaczego uważasz, że zaakceptowana odpowiedź nie jest poprawna? 1. Pojawił się prawie 3 lata przed tym, który uzyskał najwięcej głosów. 2. Przedstawia rozwiązanie, które domyślnie nie działa.
syntagma

Odpowiedzi:

47

Ctrl-[ bprzeskakuje o słowo. Możesz także użyć Esczamiast lub Ctrl-[, i fiść dalej.

To jest Ctrl+ [wydanie, a następnie blub f. Lub Esci blub f.

Więcej informacji można znaleźć w tej innej dyskusji na AskDifferent.

Wołsk
źródło
3
Byłoby lepiej, gdyby istniał sposób szybkiego cofnięcia się o wiele słów przy wciśniętym przycisku, zamiast konieczności wpisywania sekwencji klawiszy dla każdego słowa.
user1717828
Co to jest „Ctrl- [”?
Shihao Xu,
Przez „Ctrl- [” mam na myśli jednoczesne naciśnięcie klawisza „Ctrl” i „[”.
Wołsk
321

Zabicie muchy za pomocą armaty:

  • Przejdź do Preferencji ... > Profile > Klucze
  • Naciśnij Load Preset ...
  • Wybierz Natural Text Editing

Następnie możesz przenieść słowo do tyłu za pomocą Option ⌥+, a słowo do przodu za pomocą Option ⌥+ , przejść na początek linii za pomocą fn+ i na koniec linii za pomocą fn+ . Możesz także usunąć słowo wstecz za pomocą Option ⌥+ , usunąć całą linię za pomocą Command ⌘+ .

Jeśli ustawienie wstępne nie pojawi się, zainstaluj ponownie iTerm2. Jeśli zainstalowałeś go za pomocą Homebrew + Cask:

brew cask reinstall iterm2
Ricardo Stuven
źródło
48
To powinna być zaakceptowana odpowiedź!
guyarad
3
To mi nie działa. Parametry: iTerm2 3.1.2, macOS 10.12.6, klawiatura niemiecka. I nie jestem sam ...
t0r0X,
2
To jest świetne i doda większość twoich potrzeb. Nie dodaje jednak „przejdź do początku / końca linii przez CMD + strzałka w lewo / strzałka w prawo”. Aby dowiedzieć się więcej o tej akcji, zobacz: stackoverflow.com/questions/6205157/…
MikeyN0
35
Moje życie zmieniło się po tym, jak zobaczyłem tę odpowiedź. Rozwiodłem się z żoną, teraz jestem w Lambo z supermodelką.
Dragos Rizescu
12
Zauważ, że jest to Preferencje> Profile > Klucze> Załaduj ustawienia wstępne, a nie Preferencje> Klucze> Preferencje ładowania
kevin
148

Podoba mi się następująca konfiguracja.

  1. Preferencje> Klucze (lub Preferencje> Profile> Klucze)
  2. Kliknij plus.

przejdź o jedno słowo do przodu

option+right
send escape sequence
f

cofnij się o jedno słowo

option+left
send escape sequence
b

usuń na początek słowa ( kredyt )

option+delete
send hex code
0x1B 0x08

usuń do końca słowa

fn+option+delete
send escape sequence
d

(Nie pamiętam na pewno, ale myślę, że skopiowałem tę odpowiedź z poniższej odpowiedzi Jherrana i dodałem do niej więcej. Powinienem był dodać dodatkowe informacje w komentarzach lub sugerować zmiany tej odpowiedzi. Nie wiem, jak poprawić sytuacja, ale teraz jest znana.)

David Winiecki
źródło
2
W systemie MacOS 10.12 muszę użyć kodu szesnastkowego 0x17, aby uzyskać usunięcie na początek słowa
midopa
działa jak urok w macOS 10.12 i zsh
Sébastien
1
najlepsza odpowiedź, kiedy masz ode mnie piwo :)
nieskończoność
1
Zastanów się nad poprawą odpowiedzi Jherrana. Myślę, że poprawiłem nieco ich odpowiedź i prawdopodobnie powinienem był zaproponować edycję zamiast tworzenia własnej odpowiedzi. Mam wrażenie, że to ukradłem.
David Winiecki
Odnosząc się do tego : aby wykonać Esc-b, musiałem wysłać 0x1b 0x42, a dla Esc-f musiałem wysłać 0x1b 0x46: D
Meredith
36

Aby przejść do przodu (Alt-f), Wstecz (Alt-b) i Usuń (Alt-d) Word

  1. Otwórz iTerm.
  2. Przejdź do iTerm> Preferencje ...> Profile> Klucze
  3. W obszarze Klawisze skrótów profilu kliknij znak +.
  4. Wpisz skrót klawiszowy (opcja-b, opcja-f, opcja-d, opcja-lewa itp.)
  5. W polu Akcja wybierz opcję Wyślij sekwencję ucieczki.
  6. Wpisz b, d lub f w polu wprowadzania.

Działa to przynajmniej w przypadku bash. W przypadku Zsh istnieją inne sposoby nawigacji.

Jherran
źródło
2
Próbowałem dodać opcję + prawy skrót i dostałem komunikat ostrzegawczy o konflikcie, ponieważ nie zdawałem sobie sprawy, że możesz skonfigurować klucze zarówno w Preferencje> Klawisze> Globalne klawisze skrótów, a także Preferencje> Profile> Klucze> Klawisze skrótów profilu. Konfiguracja w domyślnym profilu działała.
David Winiecki
1
Działa to również dla Zsh!
Andrii Abramov
2
Myślę, że twoja odpowiedź (na to samo rozwiązanie) była najłatwiejsza do zrozumienia +1
nzaleski
1
Bardzo przydatne wyjaśnienie.
Conti
Doskonały. Możesz także użyć Command + F itp., Aby klawisz „Alt” znajdował się w tej samej pozycji i nie jest wymagana żadna regulacja podczas przełączania między komputerem PC a komputerem Mac.
friederbluemle
11

Podobne do innych odpowiedzi, ale dla Zsh znalezienie tego zajęło mi trochę czasu:

Jeśli używasz Zsh, jak Oh My Zsh, w iTerm, przejdź do: Preferencje> Profile > Podmenu Klawisze

Kliknij + znak

Dodaj kombinację skrótów, wybierz „Send Escape Sequence”

dane wejściowe dla lewej i prawej poniżej.

lewo:

[1;5D

dobrze:

[1;5C
bdanin
źródło
1
Uratowałeś mi życia
Thibaut Noah
To jedyne rozwiązanie, które zadziałało dla mnie
Bryji
Wreszcie proste rozwiązanie, które działa: D Dziękujemy za udostępnienie go nam!
Periback
To powinna być odpowiedź. Pozytywne.
ehime
2

Możesz ustawić terminal w trybie vi, set -o viaby móc korzystać ze zwykłych poleceń ruchu vi (dodaj linię, .bash_profileaby zapisać ustawienia na stałe).

Tak jak w vi, możesz uderzyć Esc, a następnie bprzesunąć jedno słowo do tyłu ( wdo przodu), przejść do początku linii za pomocą 0lub wyszukać znak do tyłu za pomocą F+ char.

Naciśnij, iaby wrócić do trybu normalnego i wstawić.

Osoby zaznajomione z vi mogą zrobić znacznie więcej. Ściągawka znajduje się tutaj .

sebnukem
źródło
2
vim rozwiązuje wszystko! : D
Breno Salgado,
Uderzanie Escwtedy Ipo prostu pójść raz na początku linii jest nieco mniej wygodne niż Ctrl-a- w tym przypadku użycie zdarza się często, gdy chcesz tylko zmienić nazwę polecenia. Więc używam trybu vi z pewnymi zmianami przypisywania klawiszy w iTerm2 do mapowania Ctrl-Ai podobnymi do sekwencji ucieczki Esc+0. W ten sposób te przypadki są jeszcze szybsze, ponieważ kończą się w trybie edycji.
rfabbri
1

wprowadź opis zdjęcia tutaj

Otwórz Preferencje

Skonfiguruj lewy (i / lub) prawy klawisz opcji, aby wysłać Esc +

Jeśli pomieszałeś z ustawieniami domyślnymi, może być konieczne załadowanie domyślnego ustawienia wstępnego (uwaga: może to wyczyścić niestandardowe skróty klawiszowe!)

wprowadź opis zdjęcia tutaj

Jeśli po wykonaniu tej czynności zobaczysz dziwne znaki, być może konieczne będzie skonfigurowanie ~ / .inputrc lub / etc / inputrc

Dodaj to do swojego ~ / .inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

pełny przykład inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.

# Be 8 bit clean.
set input-meta on
set output-meta on

# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif
Yosefrow
źródło
-1

Dzięki iTerm2 3.1.4 udało mi się skonfigurować następujące ustawienia bez dodawania indywidualnych mapowań klawiszy.

  1. Wybierz Preferencje> Profile> Klucze
  2. Klawisz w lewo / w prawo ⌥: Wybierz Esc +

Dzięki nowej sesji terminala możesz teraz używać:

Option ⌥+, faby przejść dalej

Option ⌥+, baby przejść dalej

Option ⌥+, Delete ⌫aby usunąć słowo

Fate.AKong
źródło
2
Czym różni się to od innych wysoko głosowanych odpowiedzi? apple.stackexchange.com/a/293988/237
user151019