Utilizzo dei tasti freccia-ctrl con PuTTY e schermo


33

Ho cercato e non sono riuscito a trovare una soluzione per questo da nessuna parte. Sto usando PuTTY da Windows per connettermi a vari server su cui eseguo bash e screen. Sembra che bash funzioni bene con i tasti freccia-ctrl per saltare da una parola all'altra dalla riga di comando ma all'interno dello schermo non funziona. Non sullo schermo, ctrl-left invia "^ [OC e ctrl-right è" ^ [OD ". All'interno dello schermo ottengo invece" ^ [[C "e" ^ [[D ", che sembra essere il codice per i tasti freccia sinistra / destra. Esiste un modo per ottenere lo schermo per riconoscere i tasti freccia-ctrl quando si usa PuTTY?

AGGIORNAMENTO: Sembra che PuTTY sia il problema in quanto non sta inviando i codici di escape necessari per farlo funzionare. Mi sto arrendendo per ora e sto usando Cygwin + mintty.


Wow, mintty è fantastico - da qualche tempo cerco un emulatore di terminale decente per Windows. Grazie per quello
blueyed

Tuttavia, sto ottenendo ^[[1;5Aper Ctrl-Up, che sembra essere più corretto, secondo code.google.com/p/mintty/wiki/Keycodes#Cursor_keys
blueyed

Risposte:


13

Modificare:

Ecco cosa ha funzionato per me:

  • I miei ~/.bashrcset TERM=xterm(il mio sembra essere TERM=xterm-256colors) prevalgono sullo schermoTERM=screen
  • Ho impostato PuTTY> Terminale> Funzioni> Disabilita la modalità dei tasti cursore dell'applicazione su selezionata
  • Entro tput smkxal prompt di Bash
  • Ora i tasti Ctrl-Freccia saltano parola per parola

  • A scopo informativo, se lo faccio:
    tput smkx | hexdump -c
    ottengo
    0000000 033 [ ? 1 h 033 =
    e
    tput rmkx | hexdump -c
    mi dà
    0000000 033 [ ? 1 l 033 >

Penso che ci sia un modo per rielaborarlo in qualcosa di un po 'meglio, ma è quello che ho ottenuto finora e sembra funzionare.

Risposta originale:

Da info screen:

Ogni finestra in una sessione di "schermo" emula un terminale VT100, con alcune funzioni extra aggiunte. L'emulatore VT100 è hardcoded, non è possibile emulare altri tipi di terminali.

E i VT100 non hanno codici chiave Ctrl-Freccia.


set -o vi(se sei quel tipo di persona :)
MikeyB,

1
@MikeyB: in che modo aiuta (a proposito, non lo fa)?
In pausa fino a nuovo avviso.

Grazie. Non è la risposta che speravo, ma ora posso andare avanti e vivere con questa limitazione o usare un'altra associazione di tasti.
kbosak,

1
@Dennis: Beh, ti dà un altro modo di gestire avanti / indietro se sei il tipo di persona che può avvolgerci la testa. set -o viattiva la modalità riga di comando vi in ​​modo da poter premere ESCe utilizzare i tasti vi per spostarsi e modificare la riga di comando.
MikeyB,

1
@kbosak: neanche io sono contento di quella risposta. Ecco perché l'ho risolto . :-)
In pausa fino a nuovo avviso.

23

Come menzionato qui , puoi inserire ~ / .inputrc:

"\eOD": backward-word
"\eOC": forward-word

Ha funzionato per me.


5
Questo ha funzionato per me ed è stato molto più semplice della risposta accettata.
Petrus Theron,

Questo ha funzionato anche per me, mentre la risposta accettata no
Schiavini

+1 Risposta succinta che funziona.
Adam Caviness,

3
Assicurati di avere $include /etc/inputrcnella parte superiore del .inputrcfile, altrimenti readline non leggerà i collegamenti a livello di sistema e le chiavi come Home ed End si romperanno.
James,

1
Questa dovrebbe essere la risposta accettata!
Shailen,

4

Sono un po 'sorpreso dal fatto che hai fatto in modo che Putty invii correttamente i tasti freccia-ctrl anche senza usare lo schermo, poiché non ha mai funzionato per me. La mia soluzione era passare all'uso di alt-arrowkeys (meta-arrowkeys), che credo abbiano lo stesso legame forward-word / backward-word in bash di default, anche se ho dovuto emettere un paio di comandi extra per zsh per riconoscerli:

bindkey "^ [^ [[C" forward-word # Meta-RightArrow
bindkey "^ [^ [[D" backward-word # Meta-LeftArrow

Potrei seguire anche questa strada. Il tasto ctrl sinistro è molto più facile da premere rispetto ai tasti meta o alt (almeno sulla mia tastiera). Oh bene.
kbosak,

4

Nel caso in cui altri trovino questa vecchia domanda come ho fatto io, una soluzione più recente:

I tasti Ctrl e freccia non funzionano con lo stucco! Cosa faccio?

putty inverte il senso della modalità tasto cursore su ctrl, che è un po 'difficile da rilevare correttamente per tmux. Per ottenere i tasti ctrl corretti, modifica le impostazioni del terminfo in modo che kUP5 (Ctrl-Up ecc.) Siano le versioni modificate e disabilita smkx / rmkx in modo che tmux non cambi la modalità. Ad esempio con questa riga in .tmux.conf (presupponendo che TERM sia impostato su xterm):

set -g terminal-overrides "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

Nota che questo funzionerà solo in tmux 1.2 e versioni successive.

http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ


0

Dovresti consultare la documentazione di terminfo, ncurses, screen e putty se vuoi eseguire il debug / configurare correttamente. Anche le scorciatoie bash possono essere configurate con inputrc. Guarda le pagine man di bash e cerca inputrc.


Non credo che il prob sia ciò che è in inputrc. Ho già provato diverse possibili soluzioni che hanno comportato l'inserimento di voci in inputrc senza successo. Ancora una volta, sembra che il codice errato venga inviato allo schermo per i tasti ctrl-freccia. Inoltre, non voglio dedicare molto più tempo a questo rispetto a quello che ho già dato che è davvero solo un piccolo inconveniente.
Kbosak,

0

Hai la giusta codifica dei caratteri in Putty? Se ti connetti a un server in UTF-8 e il tuo stucco è in set di caratteri standard, in vim, i tasti freccia vengono scritti. Se Putty è in UTF-8, puoi spostare il cursore. Forse è lo stesso nel tuo caso ...


Non è affatto un problema vi / vim e ho visto solo un'opzione in PuTTY per il set di caratteri, che non ha aiutato.
Kbosak,

Prova le diverse opzioni in Terminale-> Tastiera-> I tasti funzione e la tastiera. A proposito, per me Ctrl-Arrow non funziona neanche in bash, fa lo stesso senza premere Ctrl.
Prof. Moriarty,

Sì, ho provato quante più opzioni e combinazioni di opzioni senza fortuna. Cordiali saluti, ci sono alcune voci che puoi inserire in inputrc per aiutare con i tasti ctrl-freccia in bash, ma non aiutano quando usi lo schermo.
Kbosak,

0

Nella configurazione dello stucco in Terminale -> Funzionalità, ci sono alcune caselle di controllo "disabilita". Puoi provare a disabilitare i tasti cursore dell'applicazione o la modalità tastiera dell'applicazione - a volte putty cerca di essere "troppo intelligente" e invia caratteri di controllo che non sono compatibili con il server.


0

Sto usando il Terminale> Tastiera> Tasti funzione> Xterm R6 che aiuta con i tasti funzione htop (ricerca f4 ecc.) Che funzionano come previsto.

Quello che ho scoperto è che, invece di usare CTRL + freccia, ALT + freccia salta invece le parole.

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.