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

Ho eseguito l'accesso in uno dei server di hosting di hosting e notai ALT + sinistra e ALT + destra spostati tra le parole in un prompt di shell in GNU Screen.

Quale tipo di binding chiave che devo configurare e where get questo comportmento al mio locale OS X zsh in esecuzione in iTerm2?

Ho trovato la soluzione qui: https://coderwall.com/p/h6yfda . Copierà le parti più importnti, se il link scende.

  1. Vai a Preferenze, Profilo, Tasti.
  2. Impostare il tasto sinistro to per agire come un carattere di escape.
  3. Individuare la scorciatoia corrente per ⌥ ← o crearne uno nuovo, con le seguenti impostazioni:
    • Scorciatoia da tastiera: ⌥ ←
    • Azione: Invia la sequenza di escape
    • Esc +: b
  4. ripetere la scorciatoia da tastiera ⌥ → con le seguenti impostazioni:
    • Scorciatoia da tastiera: ⌥ →
    • Azione: Invia la sequenza di escape
    • Esc +: f

Stai cercando le parole chiave " backward-word e " forward-word . Quindi, se sei su una shell where i tasti non funzionano, prova a bindkey -L | grep backward-word bindkey -L | grep backward-word per verificare se sono anche configurati. Ci sono ulteriori informazioni su questo in zshzle (1) .

È ansible impostare manualmente l'associazione di tasti digitando qualcosa di simile:

bindkey ' Ctrl + v Alt + destra ' parola in avanti

bindkey ' Ctrl + v Alt + sinistra ' indietro

Ho avuto alcuni problemi anche con i tastierini e il problema era quasi sempre che il tasto Option / Alt inviato qualcosa di diverso da quello previsto Meta / Escape.

Non posso parlare per iTerm ma questi sono i keybindings che ho usato per risolvere questo problema in GNOME Terminal, su Fedora 19, che esegue ZSH 5.0.7 con Oh-my-zsh:

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

where \e == La sequenza di escape-key (come documentato nel paragrafo 4.1.1 )

e [ == O (maiuscolo O, come documentato nel paragrafo 4.2.1 ), in alcuni casi. Per esempio sotto tmux questa sostituzione è necessaria per me, tuttavia senza tmux è richiesto che non si sostituisca e [ == [

I codici chiave per una sequenza possono essere ottenuti utilizzando il cat e premendo la sequenza desiderata. Ad esempio, i risultati di premere <Alt+Right> devono essere interpretati come così:

 $ cat ^[[1;3C 

^[ == \e == La sequenza di escape-key

[ == [ senza tmux O [ == O (maiuscolo o) con tmux

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

C == Il tasto freccia destra

Quindi questa sequenza viene data a bindkey nel file ~/.zshrc per la persistenza, come primo argomento, ed è associata , il che significa che la chiave in argomento uno eseguirà un particolare command di editor (o widget in termini zsh), al widget , che nella prima row dell'esempio precedente è la forward-word .

Il ~/.zshrc dovrebbe essere ricavato dopo che questi due comandi sono stati aggiunti con:

$ source ~/.zshrc

Ora un annoiato sul mio sistema è che questa particolare combinazione ha causato all'emulatore terminal di emettere un beep each volta che il command è stato rilasciato, questo ho rimediato distriggersndo

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

Suggerisco di utilizzare zkbd per configurare i tasti. Lo uso e Alt + Left / Alt + Right funziona bene su iTerm2. Vedere zshcontrib(1) per i dettagli su zkbd.