Come posso ottenere il controllo + freccia sinistra per tornare indietro di una parola in iTerm2?


114

Stavo leggendo il manuale di Linux e ho notato che dicevo che avrei potuto usare control + left e control + right per spostare avanti e indietro le parole nel terminale durante la modifica.

"Premendo Ctrl più il tasto freccia Sinistra o Destra si sposta indietro o avanti di una parola alla volta, così come premendo Esc e poi B o F."

Su OS X control+lefte control+rightnormalmente controlla gli spazi. Ho disabilitato quelli. Ho anche provato a utilizzare il riquadro delle preferenze per impostare le scorciatoie da tastiera:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Tuttavia, questo non funziona e causa questo errore:

inserisci qui la descrizione dell'immagine

Inoltre, se sono in iTerm e uso alt+escapequindi B o F, il personaggio si muove avanti e indietro. Questo stava accadendo prima che qualcuno dei miei cambiamenti di configurazione. Ma mi piacerebbe davvero poter usare control + i tasti freccia.


Per inciso, un modo più parsimonioso per raggiungere questo obiettivo potrebbe essere semplicemente mappare comando + sinistra e comando + destra invece di ctrl + sinistra e ctrl + destra. Non ho dovuto disabilitare nulla a livello di sistema per ottenere questo risultato.
— Dottor Mohawk,

Risposte:


135

bash

Basta aggiungere quanto segue a ~/.inputrc:

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

Vedi questo post Wiki archiviato per qualche spiegazione in più. Se si desidera utilizzare la altchiave invece per lo spostamento parola a parola (come il comportamento predefinito di OS X), utilizzare:

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

zsh

zsh di default non usa la readlinelibreria e quindi non legge ~/.inputrc. Per ottenere la stessa funzionalità, potresti aggiungere quanto segue al tuo ~/.zshrc: questo userebbe di nuovo la altchiave:

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

Consulta questa documentazione per ulteriori informazioni sull'editor di linea zsh integrato (zle).


Perchè è questo? Hai impostato il tuo profilo per utilizzare le impostazioni predefinite di Xterm:

inserisci qui la descrizione dell'immagine

Questo è il motivo per cui dovrai "catturare" questa sequenza e dire readlinecosa fare.


Se quanto sopra non funziona ancora e stai usando OS X 10.9 (Mavericks) o altro, probabilmente dovrai disabilitare i collegamenti globali di Mission Control che impediscono a Control + tasti freccia di raggiungere iTerm, anche se Mission Control stesso è disabilitato. Puoi farlo da Preferenze di Sistema → Tastiera → Scorciatoie → Controllo missione :

prefs tastiera controllo missione


4
Provo a seguire le istruzioni per far funzionare i tasti alt + sinistra e alt + destra. Ho aggiunto le due righe al mio file .inputrc, ma l'unica cosa che succede quando premo i tasti è che una "D" o una "C" vengono stampate sulla shell. Sto usando iTerm2 con shell zsh. Qualche idea?
— Flo

1
@Flo Prova ad aggiungere le linee bindkey -e, bindkey '^[[1;9C' forward-worde bindkey '^[[1;9D' backward-wordal vostro ~/.zshrcposto. IIRC zsh non leggerà .inputrc- o almeno funziona per me in questo modo.
— slhck,

2
Non funziona per me con ctrl-sinistra / destra + bash, ma funziona bene se lo imposto per alt-sinistra / destra.
— Dalin,

3
Aggiunta una modifica alle scorciatoie di Mission Control che impediscono a tutto ciò di funzionare nel modo più aggressivamente opaco. Spero che salvi qualcuno dal passare attraverso la stessa cosa che ho appena fatto ...
— Rubyruy,

12
Per OSX + zsh + iTerm2 + ctrl-sinistra / destra utilizzare quanto segue:bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word
— Artur Bodera

46

Soluzione funzionante per zsh. Semplice, diretto, pronto all'uso.

  1. Vai a: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. Carica preimpostazione: Natural Text Editing

Carica preimpostazione "Modifica del testo naturale"


Grazie @Happy Torturer, credo che sia la risposta migliore soprattutto perché non ho su Terminal.app quel problema, quindi non voglio modificare bash / zsh, voglio solo lavorare come in Terminal.app.
— galuszkak,

Questo, questo, questo. Grazie mille per questa soluzione! Ho attraversato questo processo esasperante con ogni Mac che ricevo. Ora conosco il modo più semplice per farlo accadere. Grazie!
— vernonk,

8

L'ho risolto in questo modo:

Nel menu principale; vai a

Profiles 
-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)

tutto quello che ho sotto quel preset è "Impostazioni predefinite"
— MaylorTaylor

7

Ho usato un approccio diverso. Usando BetterTouchTool ho programmato una scorciatoia da tastiera personalizzata per iTerm2. Quando premo alt-left in iTerm2, invia la scorciatoia da tastiera ctrl-left con l'azione "Invia scorciatoia da tastiera all'applicazione specifica". L'applicazione è iTerm2. Ho fatto lo stesso per alt-right mappato su ctrl-right.

L'effetto è che premendo alt-sinistra o alt-destra in iTerm si invia un ctrl-sinistra o ctrl-destra direttamente a iTerm2, bypassando il solito collegamento a livello di sistema per spostare un desktop a sinistra oa destra. In questo modo ottengo il tipico comportamento mac in iTerm2, su sessioni terminali locali, ma anche su sessioni SSH remote e posso usare lo standard ctrl-sinistra / ctrl-destra per spostarmi su desktop diversi. L'ho scritto qui:

http://www.callum-macdonald.com/2013/04/17/ctrl-left-and-ctrl-right-on-iterm2/


2
BetterTouchTool non è open source e potrebbe benissimo fare cose che vorresti non fosse. Il ragazzo dice che è uno studente ma potrebbe anche essere un'agenzia di tre lettere.
— Revacuate il

7

In realtà, ho scoperto che la soluzione più semplice era quella di andare alle impostazioni del mio profilo (disponibile in Profili / Chiavi), rimuovendo le scorciatoie del profilo offensivo (poiché il profilo ha la precedenza su globale in iTerm), nel mio caso alt + sinistra e alt + destra e poi il globale le scorciatoie hanno funzionato perfettamente per me!

Inoltre, se stai usando OS X, probabilmente è meglio attenersi a scorciatoie di sistema, ovvero usando alt + sinistra e alt + destra invece per questo scopo, avere un comportamento diverso nel terminale è destinato a causare un dolore alla fine.

A parte quella soluzione di chmac per usare Better Touch Tool era un modo elegante per cambiare il controllo + il comportamento della freccia solo in iterm.


in realtà questa è la soluzione migliore. È confuso poiché la maggior parte di noi va in Keystab. Invece dobbiamo andare alla Profilesscheda -> Un profilo (es. Default) -> chiavi.
— Paschalis,

Questa è sicuramente la soluzione più sicura e semplice.
— Revacuate il

2

Questo post insegna questo e altri collegamenti come ⌥ ← Elimina per eliminare una parola:

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/


Questo in realtà non risponde alla domanda, che riguarda l'uso di <ctrl> <left>
— DavidPostill

Tutto quello che devi fare è utilizzare la scorciatoia adatta alle tue esigenze. "<ctrl> <left>" o qualunque cosa tu voglia.
— Seralto,

1
Pertanto, si prega di citare le parti essenziali della risposta dai collegamenti di riferimento, poiché la risposta può diventare non valida se le pagine collegate cambiano.
— DavidPostill

1

Devi andare nella Profilesscheda ed eliminare la mappatura per alt+ lefte alt+ rightpoiché per impostazione predefinita restituisce alcuni valori esadecimali.


Questo l'ha fatto per me!
— Filippo,
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.