Widzę, że Ctrl+ left/ rightprzeskakuje na początek / koniec linii. Jak zmienić to na Cmd+ left/ right arrow?
Aby uzyskać Alt+ left/ right arrowpoprawne działanie skoków słów, postępuj zgodnie z tym artykułem .
Widzę, że Ctrl+ left/ rightprzeskakuje na początek / koniec linii. Jak zmienić to na Cmd+ left/ right arrow?
Aby uzyskać Alt+ left/ right arrowpoprawne działanie skoków słów, postępuj zgodnie z tym artykułem .
Odpowiedzi:
Dodaj w iTerm2 następujące klawisze skrótu do profilu
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
Oto wizualizacja dla tych, którzy jej potrzebują
⌘← "SEND ESC SEQ" OH
Początek i ⌘→ "SEND ESC SEQ" OF
Koniec (są to wielkie litery „o nie zera”). To symuluje naciśnięcie klawisza Home i End i jako takie będzie działało w bash, vim itp.
Aby przeskakiwać między słowami i początkiem / końcem linii w iTerm2, wybierz jedno z dwóch poniższych rozwiązań.
Jeśli nie chcesz używać wspomnianego powyżej ustawienia wstępnego „Natural Text Editing”, możesz zmapować potrzebne klucze ręcznie:
[+]
ikonęPrzesuń kursor o jedno słowo w lewo
0x1b 0x62
Przesuń kursor o jedno słowo w prawo
0x1b 0x66
Przesuń kursor na początek linii
0x01
Przesuń kursor na koniec linii
0x05
Usuń słowo
0x1b 0x08
Usuń linię
0x15
Cofnij
0x1f
Nie zapomnij usunąć poprzednich powiązań :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
. Dobrze byłoby wiedzieć, gdyby ludzie nie chcieli tego usuwać.
Widzę, że jest już wiele dobrych odpowiedzi, ale powinno to zapewnić możliwie najbliższą natywną funkcjonalność OSX w więcej niż tylko powłoce. Sprawdziłem, że działa to w sesjach ZSH, Bash, node, python -i, iex i irb / pry (używając gem rb-readline dla readline, ale powinno działać dla wszystkich).
Otwórz preferencje iTerm ⌘+ ,i przejdź do Profiles
karty ( Keys
karty można używać, ale dodanie skrótu klawiszowego do profilu pozwala zapisać profil i zsynchronizować go z wieloma komputerami) oraz keys
podkartę i wprowadzić następujące dane:
Usuń wszystkie znaki po lewej stronie kursora
⌘+ ←DeleteWyślij kody szesnastkowe:
0x15
Bardziej kompatybilny, ale funkcjonalność czasami polega na usunięciu całej linii, a nie tylko znaków po lewej stronie kursora. Ja osobiście tego używam, a następnie nadpisuję mój klawisz powiązania zsh,^U
aby usunąć tylko rzeczy po lewej stronie kursora (patrz poniżej).lub
0x18 0x7f
Mniej kompatybilny, nie działa w węźle i domyślnie nie działa w zsh, patrz poniżej, aby naprawić zsh (bash / irb / pry powinno być w porządku), wykonuje pożądaną funkcjonalność, gdy działa.
Usuń wszystkie znaki z prawej strony kursora
⌘+ fn+ ←Deletelub ⌘+ Delete→Wyślij kody szesnastkowe:
0x0b
Usuń jedno słowo na lewo od kursora
⌥+ ←DeleteWyślij kody szesnastkowe:
0x1b 0x08
Przerwy w IEX Elixira wydają się działać wszędzielub
0x17
Działa wszędzie, ale nie kończy się na zwykłych podziałach wyrazów w IRB i zamiast tego usuwa się, dopóki nie zobaczy literalnej spacji.
Usuń jedno słowo na prawo od kursora
⌥+ fn←Deletelub ⌥+ Delete→Wyślij kody szesnastkowe:
0x1b 0x64
Przesuń kursor na początek linii
⌘+ ←Wyślij kody szesnastkowe:
0x01
Przesuń kursor na koniec linii
⌘+ →Wyślij kody szesnastkowe:
0x05
Przesuń kursor o jedno słowo w lewo
⌥+ ←Wyślij kody szesnastkowe:
0x1b 0x62
Przesuń kursor o jedno słowo w prawo
⌥+ →Wyślij kody szesnastkowe:
0x1b 0x66
Cofnij
⌘+ zWyślij kody szesnastkowe:
0x1f
Ponów zwykle nie jest związany w bash, zsh ani readline, więc możemy ustawić go na nieużywany kod szesnastkowy, który możemy następnie naprawić w zsh
⇧+ ⌘+ Zlub ⌘+ yWyślij kody szesnastkowe:
0x18 0x1f
Teraz, jak naprawić te, które nie działają
W przypadku Zsh można skonfigurować powiązanie dla jeszcze niefunkcjonalnego ⌘+ ←Deletei ⇧+ ⌘+ Z/ ⌘+ y, uruchamiając:
# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc
# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc
# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc
# reload your .zshrc for changes to take effect
$ source ~/.zshrc
Nie jestem w stanie znaleźć rozwiązania dla dodawania powtórzeń w bash lub readline, więc jeśli ktoś zna rozwiązanie dla któregokolwiek z nich, proszę o komentarz poniżej, a ja spróbuję je dodać.
Dla każdego, kto szuka tabeli odnośników, w jaki sposób konwertować sekwencje klawiszy na szesnastkę, ta tabela jest bardzo pomocna.
$
przodu echo
(po prostu usunąć?). Poza tym jest idealny. Dziękuję Ci.
bindkey | grep "\^\[b"
a to powie ci, czy coś innego nadpisuje to po ustawieniu. To powinno tylko wrócić #=> "^[b" backward-word
. Jeśli jest zastępowany, musisz znaleźć, gdzie jest zastępowany i usunąć go. Jeśli nie jest to możliwe, możesz go uruchomić echo 'bindkey "^[b" backward-word' >> ~/.zshrc
, doda go do ostatniego wiersza twojego .zshrc
, a następnie uruchom ponownie iTerm i powinno działać
keys
zakładkę w preferencjach iTerm, aby zobaczyć, czy to również mapowanie ⌥
+ ←
do czegoś. Jeśli tak, usuń go. Możesz sprawdzić, czy b
działa poprawnie, szybko naciskając esc
zwalnianie, a następnie naciskając b
. To powinno przeskoczyć słowo w lewo. Alternatywnie możesz zmapować ⌥
+ ←
na hex 0x1b 0x42
lub 0x1b 0x5b 0x31 0x3b 0x35 0x44
. Sprawdziłem, że oba te elementy działają dla mnie. Naprawdę myślę, że ⌥
+ zostałeś ←
nadpisany w iTerm, albo w profile
keys
zakładce, albo w keys
zakładce.
Postępuj zgodnie z samouczkiem wymienionym powyżej, aby skonfigurować najważniejsze preferencje w iterm2 .
W iTerm 3.0.12 możesz przełączyć na Natural Text Editing
preset:
iTerm → Preferencje → Profile → Klucze
Ostrzeżenie Ponieważ jest to ustawienie wstępne, może zastąpić klucze, które wcześniej powiązałeś. Dlatego lepiej zapisać bieżące powiązania klawiszy przed zastosowaniem ustawienia wstępnego.
W celu szybkiego odniesienia się do każdego, kto chce przejść do końca linii lub początku linii w iTerm2, powyższy link http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html zauważa, że w iTerm2:
Użyłem odpowiedzi Travis i stworzyłem profil dynamiczny, który można zaimportować na podstawie jego instrukcji.
GabLeRoux / iterm2-macos-dynamic-profile
Instrukcje znajdują się w pliku Readme, a importowanie tego jest o wiele szybsze niż dodawanie ich ręcznie. Uczyniłem to odpowiedzią na prośbę @ gooli, ponieważ było to ukryte w komentarzu. Mam nadzieję, że ci się spodoba 🍻
Tylko po to, aby pomóc każdemu, kto ma ten sam problem, ale konkretnie używa powłoki Zsh z iTerm 2. Okazuje się, że Zsh nie czyta /etc/inputrc
poprawnie , a więc nie rozumie żadnych powiązań klawiszy skonfigurowanych w preferencjach!
Aby to naprawić, musisz dodać kilka powiązań klawiszy do .zshrc
pliku, takich jak:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
Zwróć uwagę na odwrotne ukośniki w powyższym przykładzie przed „e”, w połączonym artykule nie ma ich, więc dodaj je do .zshrc
pliku podczas dodawania powiązań.
Powiązania emacs starej mody mogą nadal działać w terminalu iterm2 i os x:
Preferencje -> Profile -> Klucze (zakładka w profilach)
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(podobny w terminalu OS X)To powinno umożliwić alt- fi alt- bprzenoszenie słów po słowach. (Nadal ctrl- ai ctrl- ezawsze działa jak zwykle)
Jeśli ustawione jako meta
te stare powiązania będą działać, podczas gdy niektóre powiązania iterm2 będą niedostępne.
Jak wyjaśniono tutaj , możesz to zrobić za pomocą prostych kroków:
Domyślnie skoki słów (opcja + → lub ←) i usuwanie słów (opcja + backspace) nie działają. Aby je włączyć, przejdź do „iTerm → Preferencje → Profile → Klucze → Załaduj ustawienie wstępne ... → Edycja tekstu naturalnego → Boom! Głowa eksploduje”
bind -p
pokaże listę powiązanych klawiszy ucieczki w twojej powłoce, co może pomóc ci dać więcej pomysłów / wyszukiwanych terminów.
bind -p
działa tylko w powłokach Bourne'a (bash, sh) dla zsh, csh tcsh, use bindkey
.
wyjaśnione w https://aaronaddleman.com/articles/hexcodes-and-iterm/
możesz użyć, xxd -psd
aby uzyskać kluczowy kod szesnastkowy.
Dla mnie zadziałała następująca kombinacja:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |