it-swarm-eu.dev

Come configurare PuTTY in modo che Home/End/PgUp/PgDn funzioni correttamente in bash?

I tasti Home, Fine, PageUp, PageDown digitano tutti ~ nella mia sessione bash invece di spostare il cursore/vista intorno. Perché succede questo e quali impostazioni devo cambiare?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60

La domanda originariamente leggeva:

In PuTTY, perché premendo il tasto "Home" sulla Shell (bash) scrivi un "~"? O meglio, come faccio a spostare il cursore all'inizio del comando che ho digitato?

(Ho pensato che il motivo era che ~ è la directory home , ma le risposte dicono che non è così.)

118
RomanSt

Cambia la stringa di tipo terminale sotto la scheda Connessione> Dati dall'impostazione predefinita "xterm" a "linux". Ha funzionato per me.

enter image description here

145
Stephen Irons

Questo sta accadendo perché non hai il tipo di terminale di PuTTY impostato correttamente, o perché il tuo server non ha le definizioni corrette di terminfo installate.

Sui sistemi basati su Debian, il pacchetto ncurses-term (versione 5.7 + 20081213-1) include i file di definizione terminfo per PuTTY , PuTTY-256color e PuTTY-vt100 terminal tipi. Se hai installato questo pacchetto, puoi impostare la "stringa del tipo di terminale" su "PuTTY" invece del "xterm" predefinito nella configurazione della sessione di PuTTY (Connessione -> Dati).

Stephen Irons menziona anche "linux" come un altro tipo di terminale che funziona; Credo che sia corretto dall'esperienza precedente, ma non l'ho provato di recente.

Nei miei sistemi, questo consente a Home e End di funzionare correttamente, sebbene PageUp/PageDown non scorrano la finestra della console. (Funzionano correttamente in applicazioni ncurses come aptitude , e Shift-PgUp/Shift-PgDn scorrono la finestra della console.)

42
quack quixote

Se si desidera verificare quale codice viene inviato da PuTTY al proprio terminale quando si preme un tasto o una combinazione di tasti, è sufficiente emettere un Ctrl+V e quindi premere il tasto desiderato.

Ad esempio sulla mia casella, premendo il tasto Home verrà generata la seguente stringa sul mio terminale:

^[[1~

Ciò significa che PuTTY invia il carattere di escape ^ [seguito dalla stringa [1 ~ .

Puoi creare un file ~/.inputrc nella tua cartella $HOME, o in alternativa un file /etc/inputrc a seconda del tuo sistema. Quindi riempi questo file con i codici PuTTY e le azioni Bash corrispondenti che desideri vengano attivate da Bash.

Nota: Sostituisci ogni ^ [carattere dall'equivalente\e string

Nel mio esempio, aggiungerò una riga con il mio codice chiave Home e l'azione inizio riga (che per impostazione predefinita è associata a Ctrl+A in Bash):

"\e[1~": beginning-of-line

Cordiali saluti, il mio file inputrc ha il seguente contenuto:

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line     # Home key
"\e[4~": end-of-line           # End key
"\e[5~": beginning-of-history  # PageUp key
"\e[6~": end-of-history        # PageDown key
"\e[3~": delete-char           # Delete key
"\e[2~": quoted-insert         # Insert key
"\eOD": backward-Word          # Ctrl + Left Arrow key
"\eOC": forward-Word           # Ctrl + Right Arrow key

Da @Cimbali: Altri comandi associabili (come la cronologia precedente: Sposta `su 'nella lista della cronologia) disponibili su questa pagina di riferimento .

19
Damien Garrido

Ctrl + A ti porta all'inizio della linea

Ecco un elenco di scorciatoie da tastiera di Bash

14
Iain

Quello che sta effettivamente inviando è ^[[1~ che è una sequenza di escape terminale composta da:

  • ^ [- fuga
  • [- parentesi quadra sinistra
  • 1 uno
  • ~ - tilde

Puoi vederlo premendo Ctrl+V poi Home.

Potresti essere in grado di risolvere il tuo problema cambiando l'impostazione della tastiera PuTTY per i tasti Home e End su rxvt (che rende la sequenza di escape ^[[H o modificando il $ TERM che stai usando (o modificando ~/.inputrc).

A proposito, non c'è alcuna relazione tra le tilde che si ottengono quando si preme Home e la tilde che rappresenta la directory home. Ad esempio, nella mia configurazione Page-Down produce ^[[6~ che stamperebbe anche una tilde se non fosse interpretata correttamente.

9

Non di queste opzioni ha funzionato per me. Sto eseguendo un vecchio sistema AIX. Ho dovuto aggiungere il seguente alias al mio .profile

alias __A=$(print '\0020') # ^P = up = previous command
alias __B=$(print '\0016') # ^N = down = next command
alias __C=$(print '\0006') # ^F = right = forward a character
alias __D=$(print '\0002') # ^B = left = back a character
2
TruCK

Non riuscivo a farlo funzionare con altri metodi. Ho comunque creato questo script AutoHotkey che funziona, a patto che Shell sia Bash:

#IfWinActive ahk_class PuTTY
PgUp::Send +{PgUp}
PgDn::Send +{PgDn}
Home::Send ^a   ; beginning of line
End::Send ^e    ; end of line
+^Del::Send ^k  ; delete whole line after cursor
+End::Send ^k   ; delete whole line after cursor
+Home::Send ^u  ; delete whole line before cursor
^Del::Send !d   ; delete Word after cursor
^BS::Send ^w    ; delete Word before cursor
^Left::Send !b  ; jump Word left
^Right::Send !f ; jump Word right
#IfWinActive

Usare con cautela anche se, poiché non tutti questi tasti di scelta rapida funzionano in altri programmi.

1
Ciantic