Czy wiesz, jaki jest kod / sekwencja dla Command + Delete? (usuń monit)
Steven Lu
10
Odpowiedziałem na mój pierwszy komentarz gdzie indziej, w zasadzie kod szesnastkowy 0x15 daje Ctrl + U, który usuwa linię. Jednak znajduję 0x01 Ctrl + A, aby zakłócać użycie Tmux. Dlatego zamierzam zamapować go zamiast klawisza Home (ta sama funkcjonalność, co Fn + Left na klawiaturze Maca).
Steven Lu
7
Sekwencja ucieczki dla Home to [1 ~, a sekwencja ucieczki dla End to [4 ~
Steven Lu
3
Działa jak urok, super!
Juto
25
Prawidłowe powiązanie dotyczy opcji ⌘← "SEND ESC SEQ" OHPoczątek i ⌘→ "SEND ESC SEQ" OFKoniec (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.
Timothy Zorn
432
Aby przeskakiwać między słowami i początkiem / końcem linii w iTerm2, wybierz jedno z dwóch poniższych rozwiązań.
1. Proste rozwiązanie (zalecane)
Otwórz Preferencje
Kliknij kartę „Profil”
Wybierz profil z listy po lewej stronie (np. „Domyślne”) i kliknij kartę „Klucze”
Kliknij menu „Ustawienia wstępne” i wybierz „Naturalna edycja tekstu”
2. Ręczne mapowanie kluczy (zaawansowane)
Jeśli nie chcesz używać wspomnianego powyżej ustawienia wstępnego „Natural Text Editing”, możesz zmapować potrzebne klucze ręcznie:
Otwórz Preferencje
Kliknij kartę „Klucze”
Kliknij [+]ikonę
Możesz teraz dodać następujące skróty klawiaturowe:
To działało dla mnie dobrze w iTerm2 i było bardzo łatwe do naśladowania, dzięki!
Natetronn,
3
Tylko wyjaśnienie, co robią oryginalne wiązania ⌥ ←? Widzę to Says send Hex Codes: 0x1b 0x1b 0x5b 0x44. Dobrze byłoby wiedzieć, gdyby ludzie nie chcieli tego usuwać.
sierpień
5
Skok na początek i koniec linii nie działał dla mnie przy użyciu zsh. Używanie „kodu szesnastkowego” „0x01” / „0x05”, jak sugeruje górna odpowiedź, działało dla mnie.
Flip
2
Przeskok na początek i koniec linii też nie działał dla mnie. Najlepsza odpowiedź zadziałała.
hisabimbola
3
Czy iTerm ma sposób na spakowanie ich w gotowe ustawienia, które możemy po prostu załadować? Irytujące jest ręczne wpisywanie, ale zadziałało to dla mnie i było niesamowite. Dzięki Lto!
sierpień
259
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 Profileskarty ( Keyskarty można używać, ale dodanie skrótu klawiszowego do profilu pozwala zapisać profil i zsynchronizować go z wieloma komputerami) oraz keyspodkartę i wprowadzić następujące dane:
Usuń wszystkie znaki po lewej stronie kursora
⌘+ ←DeleteWyślij kody szesnastkowe:
0x15Bardziej 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, ^Uaby usunąć tylko rzeczy po lewej stronie kursora (patrz poniżej).
lub
0x18 0x7fMniej 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.
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.
To jest naprawdę przydatne, robi dużą różnicę! Chciałbym podkreślić, że niektórzy ludzie mogą się pomylić z $przodu echo(po prostu usunąć?). Poza tym jest idealny. Dziękuję Ci.
edmundo,
1
@Christophe Wygląda na to, że kluczowanie jest tam, jak powinno być. Albo popełniłeś błąd, dodając wartości szesnastkowe, albo zastępowane jest słowo kluczowe dla słowa wstecznego. Uruchom, 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ć
Travis
2
@Christophe sprawdź keyszakładkę w preferencjach iTerm, aby zobaczyć, czy to również mapowanie ⌥+ ←do czegoś. Jeśli tak, usuń go. Możesz sprawdzić, czy bdziała poprawnie, szybko naciskając esczwalnianie, a następnie naciskając b. To powinno przeskoczyć słowo w lewo. Alternatywnie możesz zmapować ⌥+ ←na hex 0x1b 0x42lub0x1b 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 profilekeyszakładce, albo w keyszakładce.
Travis,
3
Niesamowity! Właśnie dowiedziałem się o powiązaniach Cofnij i Ponów z tego miejsca.
ecbrodie
3
Zrobiłem to ręcznie i pomyślałem, dlaczego nie mogę zaimportować profilu, aby to zrobić? Następnie stworzyłem profil dynamiczny GabLeRoux / iterm2-macos-dynamiczny na podstawie tych instrukcji. Działa bezbłędnie, dzięki 🍻
GabLeRoux
48
Postępuj zgodnie z samouczkiem wymienionym powyżej, aby skonfigurować najważniejsze preferencje w iterm2 .
Utwórz nowy klucz skrótu
Wybierz „Wyślij sekwencję ucieczki” jako akcję
Następnie, aby ustawić cmd-left , w poniższym tekście:
Kocham to! inne rozwiązania nie działały dla mnie. Spędziłem godziny sfrustrowany, że nie mogłem użyć Ctrl + A i Ctrl + E w iterm2. Ale nie chciałem rezygnować z ryb. To całkowicie działa, dziękuję!
LATA
Inne rozwiązania też mi nie działały, ale to zadziałało.
Braham Snyder
42
W iTerm 3.0.12 możesz przełączyć na Natural Text Editingpreset:
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.
Czy mógłbyś bardziej rozwinąć swoją odpowiedź? Jak w tym, co ten zestaw zawiera i może zastąpić?
Carles Alcolea,
Dziękuję za odpowiedź. Również brzęczenie jest prawdopodobnie najlepszą praktyką, aby zastosować to do własnego profilu niestandardowego w ten sposób, że nie wkręcasz domyślnych ustawień i możesz przełączać profil jako „tryb” edycji tekstu naturalnego
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 🍻
Wróciłem tu rok później i cieszę się, że to znalazłem!
elifiner
9
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/inputrcpoprawnie , a więc nie rozumie żadnych powiązań klawiszy skonfigurowanych w preferencjach!
Aby to naprawić, musisz dodać kilka powiązań klawiszy do .zshrcpliku, takich jak:
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 .zshrcpliku podczas dodawania powiązań.
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”
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 |
Odpowiedzi:
Dodaj w iTerm2 następujące klawisze skrótu do profilu
Oto wizualizacja dla tych, którzy jej potrzebują
źródło
⌘← "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ń.
1. Proste rozwiązanie (zalecane)
2. Ręczne mapowanie kluczy (zaawansowane)
Jeśli nie chcesz używać wspomnianego powyżej ustawienia wstępnego „Natural Text Editing”, możesz zmapować potrzebne klucze ręcznie:
[+]
ikonęMożesz teraz dodać następujące skróty klawiaturowe:
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ń :
źródło
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) orazkeys
podkartę i wprowadzić następujące dane:Usuń wszystkie znaki po lewej stronie kursora
Usuń wszystkie znaki z prawej strony kursora
Usuń jedno słowo na lewo od kursora
Usuń jedno słowo na prawo od kursora
Przesuń kursor na początek linii
Przesuń kursor na koniec linii
Przesuń kursor o jedno słowo w lewo
Przesuń kursor o jedno słowo w prawo
Cofnij
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
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:
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.
źródło
$
przoduecho
(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ć, czyb
działa poprawnie, szybko naciskającesc
zwalnianie, a następnie naciskającb
. To powinno przeskoczyć słowo w lewo. Alternatywnie możesz zmapować⌥
+←
na hex0x1b 0x42
lub0x1b 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 wprofile
keys
zakładce, albo wkeys
zakładce.Postępuj zgodnie z samouczkiem wymienionym powyżej, aby skonfigurować najważniejsze preferencje w iterm2 .
LUB
źródło
W iTerm 3.0.12 możesz przełączyć na
Natural Text Editing
preset: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.
źródło
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:
źródło
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 🍻
źródło
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: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ń.źródło
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.źródło
Jak wyjaśniono tutaj , możesz to zrobić za pomocą prostych kroków:
źródło
Jedyne, co działa w przypadku przejścia na początek i koniec linii, to
⌘← "SEND ESC SEQ" OH
- aby przejść na początek linii⌘→ "SEND ESC SEQ" OF
- aby przejść na koniec liniiźródło
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.źródło
bind -p
działa tylko w powłokach Bourne'a (bash, sh) dla zsh, csh tcsh, usebindkey
.wyjaśnione w https://aaronaddleman.com/articles/hexcodes-and-iterm/
możesz użyć,
xxd -psd
aby uzyskać kluczowy kod szesnastkowy.źródło
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 |
źródło