2009-12-16 5 views
10

Io uso tcsh e quando si preme Delete/End su linea cmd, appare semplicemente come ~; Devo premere <Ctrl><e> per andare a fine riga. Qualcuno può aiutarmi ad essere in grado di utilizzare i tasti Elimina/Fine come suggerisce il loro nome?Come mappare i tasti Delete e End sulla shell tcsh?

risposta

13

Queste chiavi funzionavano già sul mio sistema Debian. Ho trovato questi comandi nel file /etc/csh.cshrc:

if ($?tcsh && $?prompt) then 
     bindkey "\e[1~" beginning-of-line # Home 
     bindkey "\e[7~" beginning-of-line # Home rxvt 
     bindkey "\e[2~" overwrite-mode # Ins 
     bindkey "\e[3~" delete-char  # Delete 
     bindkey "\e[4~" end-of-line  # End 
     bindkey "\e[8~" end-of-line  # End rxvt 
endif 
+3

Ho scoperto che invece di memorizzare la sequenza criptica \ e [puoi digitare direttamente: 'bindkey delete-char' - in questo modo non è necessario cercare la sequenza !! :) In ogni caso, la tua è stata la risposta più completa !! – TCSGrad

1

È necessario utilizzare il bindkey integrato. Vedi la discussione tcsh man page per i dettagli (la ricerca di 'bindkey'), ma si desidera aggiungere una linea come

bindkey [end] end-of-line 

al file .cshrc o .tcshrc, sostituendo '[fine]' con l'attuale fine pressione di un tasto. Vedere this page per l'elenco di nomi di binding ed esempi utili.

+0

Corretto, ma quando si digita la riga sopra (sto usando vim), si deve sostituire [fine] con '' !! – TCSGrad

0

C'è una grande risorsa che fissa incongruenze con delete/backspace here. Il documento affronta anche la mappatura home/end, anche se questo non è l'obiettivo.

+0

Sì, ho ricevuto quel documento da Google, ma era troppo generalizzato (per non aggiungere enormi !!) ... Credo che tu sia più paziente di quanto lo sia io !! :) – TCSGrad