ALT + freccia che si sposta tra le parole in zsh e iTerm2


19

Ho effettuato l'accesso su uno dei server del provider di hosting e ho notato ALT + sinistra e ALT + destra spostati tra le parole in un prompt della shell nella schermata GNU.

Che tipo di combinazioni di tasti devo configurare e dove ottenere questo comportamento sul mio OS X zsh locale in esecuzione su iTerm2?


Le persone interessate a questa domanda potrebbero anche essere interessate a sapere che le parole zsh non sono parole bash. FOO=BARè una parola per zsh e 2 parole per bash. Allo stesso modo, se si imposta il cursore alla fine di foo --bare si fa alt + backspace, in bash si avrà foo --e in zsh si avrà foo . Zsh aggiunge molte funzionalità a bash, ma ha anche molte impostazioni predefinite folli da sovrascrivere.
weberc2,

Risposte:


28

Ho trovato la soluzione qui: https://coderwall.com/p/h6yfda . Copia le parti più importanti di esso, nel caso in cui il collegamento si interrompa.

  1. Vai a Preferenze, Profilo, Chiavi.
  2. Imposta il tasto sinistro ⌥ per agire come personaggio di fuga.
  3. Individua il collegamento corrente per ⌥ ← o creane uno nuovo, con le seguenti impostazioni:
    • Scorciatoia da tastiera: ⌥ ←
    • Azione: invia sequenza di escape
    • Esc +: b
  4. ripetere per ⌥ → la scorciatoia da tastiera con le seguenti impostazioni:
    • Tasto di scelta rapida: ⌥ →
    • Azione: invia sequenza di escape
    • Esc +: f

1
Vale la pena ricordare che è specifico per un particolare emulatore di terminale, non per zsh in generale.
Ciao Angelo

6

Stai cercando le parole chiave backward-worde forward-word. Quindi, se ti trovi su una shell in cui i tasti non funzionano, prova bindkey -L | grep backward-wordper verificare se sono persino configurati. Ci sono ulteriori informazioni al riguardo in zshzle (1) .

Puoi impostare manualmente l'associazione dei tasti digitando qualcosa del genere:

bindkey ' Ctrl+ v Alt+ Right' forward-word

bindkey ' Ctrl+ v Alt+ Left' parola all'indietro

Ho avuto anche qualche problema con le combinazioni di tasti e il problema era quasi sempre che il tasto Opzione / Alt inviava qualcosa di diverso dal previsto Meta / Escape.


Puoi anche usare emacs-forward-worde emacs-backward-word. La differenza è che salti in avanti fino alla fine della parola e indietro all'inizio della parola invece di saltare sempre all'inizio della parola.
Aalex Gabi,

Questa è la soluzione più robusta e pulita. Può adattarsi a diversi tipi di mappatura dei tasti e / o a tutti i tipi di combinazione ssh-tmux-zsh. Altre soluzioni che prevedono una sequenza di escape codificata risolvono solo alcuni dei casi in un determinato sistema.
HKTonyLee,

3

Non posso parlare per iTerm ma queste sono le combinazioni di tasti che ho usato per risolvere questo problema con il Terminale GNOME, su Fedora 19, con ZSH 5.0.7 con Oh-my-zsh:

bindkey "\e[1;3C" forward-word
bindkey "\e[1;3D" backward-word

dove \e== La sequenza di tasti di escape (come documentato nella sezione 4.1.1 )

e [== O(O maiuscola, come documentato nella sezione 4.2.1 ), in alcuni casi. Per esempio, sotto tmuxquesta sostituzione è necessario per me, tuttavia senza di tmuxessa è necessario che non venga effettuata alcuna sostituzione e [==[

I codici chiave per una sequenza possono essere ottenuti usando cate premendo la sequenza desiderata. Ad esempio, i risultati della pressatura <Alt+Right>dovrebbero essere interpretati in questo modo:

$ cat
^[[1;3C

^[== \e== La sequenza di tasti di escape

[== [senza tmuxOR [== O(maiuscola o) contmux

1;3 == Non ne sono sicuro, ma dovrebbe significare logicamente <Alt>

C == Il tasto freccia destra

Quindi questa sequenza è data bindkeynel ~/.zshrcfile per la persistenza, come primo argomento, ed è vincolata , il che significa che la sequenza di tasti nell'argomento uno eseguirà un particolare comando dell'editor (o widget in termini zsh), al widget, che nel primo riga dell'esempio sopra è forward-word.

Il ~/.zshrcdovrebbero ripristinata eseguiti dopo questi due comandi vengono aggiunti ad esso con:

$ source ~/.zshrc

Ora un fastidio per il mio sistema è che questa particolare combinazione ha causato un segnale acustico all'emulatore di terminale ogni volta che il comando è stato emesso, questo ho risolto disabilitando il

'Edit'->'Profile Preferences'->'Terminal Bell' casella di controllo.


1

Ciò che ha funzionato meglio per me per rendere la navigazione della riga di comando di iTerm2 più intuitiva per me (sono un giovane adulto che non è cresciuto su una riga di comando, ma ho trascorso molto tempo in editor di testo e IDE) è stato per:

  • Vai a Preferenze -> Profilo -> Chiavi
  • Nell'elenco dei mapping dei tasti è presente una casella per aggiungere / rimuovere o caricare i preset (casella combinata)
  • Seleziona l' Natural Text Editingopzione nel menu a discesa Predefiniti.

Per impostazione predefinita, le chiavi dell'editor vengono configurate in modo più standard senza che io debba modificare ogni opzione singolarmente.


0

Ti suggerisco di usare zkbdper configurare le combinazioni di tasti. Lo uso e Alt+ Left/ Alt+ Rightfunziona bene su iTerm2. Vedi i zshcontrib(1)dettagli su zkbd.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.