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.