Ctrl + tasto freccia sinistra / destra


25

Dopo l'ultimo aggiornamento del sistema il comando ctrl + freccia sinistra / destra sul terminale zsh non fa nulla. Anche ctrl + u ha qualcosa di sbagliato perché di solito quel comando cancella dal cursore all'inizio della riga, mentre ora cancella l'intera riga .. Qualcuno sa come risolvere questi problemi? grazie a tutti.


Hai trovato una risposta accettabile? Penso che la risposta di Goncalo sia fantastica.
Léo Léopold Hertz 준영

Risposte:


44

FWIW, questo è ciò che ha funzionato nel mio ambiente (rhel5.x) usando il valore predefinito di zsh.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word

5
^[^[[De ^[^[[C, rispettivamente, per OSX
Jon z

1
Confermata, la proposta di Goncalo funziona anche in Debian 8.5. Mi chiedo solo perché questo codice non è integrato .zshrcper impostazione predefinita.
Léo Léopold Hertz 준영

Funziona come un fascino in Ubuntu Artful, grazie!
Konrad Garus,

Nel caso qualcuno voglia usare al $terminfoposto delle sequenze di escape: le chiavi $terminfo[kLFT5]e ha $terminfo[kRIT5]funzionato per me
Griddo,

14

Ctrl + U è molto probabilmente perché hai il cursore alla fine della linea. In secondo luogo, a quale versione di Gentoo ti riferisci come "ultimo aggiornamento del sistema"?

E cosa vorresti che facessero i tasti Ctrl + Sinistra / Destra?

  • Aggiungi a zsh config:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • E da vecchi rottami ho trovato (potrebbe aiutare):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • o dai un'occhiata a questo link, che dovrebbe aiutarti?

Nota: se la configurazione funziona ma i tasti presunti non fanno quello che vuoi, forse perché la definizione del tasto differisce dalla tua e dalla mia, fai: cat > /dev/null e premi i tasti che desideri ottenere e regolare di conseguenza.


1
"Ctrl + U è molto probabilmente perché hai il cursore alla fine della riga" ovviamente intendo quando il mio cursore è nel mezzo. "E cosa vorresti che facesse il ctrl + sinistra / destra?" di solito ctrl + freccia sinistra: salta la parola andando a sinistra ecc ...
riskio

E quale shell / terminale stai usando? Assicurati di usare Emacs o qualunque terminale usi abitualmente e / bin / bash? stai correndo attraverso lo schermo?
Torxed

1
per favore leggi la domanda c'è ..
riskio

1
@Masi Non sono sicuro, ho risposto due anni prima di lui e le nostre risposte sono quasi identiche, ho appena mostrato due modi diversi per farlo .. e puoi unirli entrambi per combinare ciò che ha scritto.
Torxed il

1
@Masi Tutto quello che so è che allora (ricordate, 2010-2012 .. È stato tanto tempo fa) questi due (e la loro combinazione) hanno funzionato per me su molti sistemi diversi. Ero su Unix e Linux (ed era su Gentoo, un sistema operativo a rilascio progressivo). E ci sono ancora tracce di questo in molti esempi .. Come questo repository. Ora, ancora una volta, non sono del tutto sicuro del perché, ma ha funzionato su almeno due macchine, quindi ho pensato di condividerlo. E sicuramente il suo è più chiaro OGGI, e non mi dispiace che ottenga tutti i voti positivi. Questo è un post precedente.
Torxed il

5

Ciò che funziona non dipende direttamente dalla distro (Gentoo, Debian, RHEL ecc.) O dalla shell (ZSH, KSH, BASH) - dipende da quale terminal emulatorviene utilizzato e dalle sue impostazioni: konsole, terminator, urxvt, lx-terminal ecc. La distro può avere importanza se utilizza una diversa configurazione della shell standard (fx. .zshrc) e se si utilizza una shell diversa che configura le shell su quella distribuzione può già gestirla.

Ecco alcune soluzioni specifiche per l'emulatore di terminale:

urxvt / rxvt-unicode (e forse altri):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

terminator, konsole e xterm (e forse altri):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

Per un approccio più generale, avvia il tuo terminale, premi CTRL-V seguito dalla combinazione di tasti di cui vuoi il codice di escape (il nome) - in questo caso le combinazioni di tasti CTRL-leftarrow e CTRL-rightarrow - e metti l'output per ogni combinazione di tasti tra le due virgolette.


1
Hai provato il suggerimento CTRL-V? Forse il tuo terminale interpreta le sequenze di tasti in modo diverso, quindi la chiave deve essere associata a "simboli" diversi?
Miyalys,

1
Ho aggiornato la mia risposta. Esistono più soluzioni a seconda terminal emulatordell'usato. La distro o shell non ha importanza. Questo è probabilmente anche il motivo per cui non è in .zshrc, perché ciò che funziona per un emulatore di terminale non funziona per un altro. Ma questo potrebbe probabilmente essere risolto se zshrc fx. leggi la variabile d'ambiente $ TERM e applica diverse impostazioni bindkey in base al risultato.
Miyalys,

2

Risolto.

Terminale utilizzato: Konsole .

Per risolvere: fare clic con il tasto destro sul terminale (o impostazioni nella barra dei menu) -> cambia profilo corrente -> mappatura tastiera -> cambia in Predefinito (xfree4)


nemmeno molto legato a zsh ma certo, una correzione è una correzione.
Torxed
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.