Come risolvere strani comportamenti backspace con urxvt + zsh?


15

Uso urxvt in combinazione con zsh. Tuttavia dalla mia nuova installazione di Ubuntu 10.04 ho il seguente problema. Se scrivo backspace, il cursore si sposta a destra (anziché eliminare i caratteri a sinistra).

Supponiamo che io abbia digitato n caratteri, quindi premendo backspace n-times sposta il cursore n-posizioni a sinistra, se scrivo backspace poi un altro, il cursore non si sposta più.

Se scrivo la freccia a sinistra, non succede nulla, se dopo scrivo la freccia a destra compare un carattere.

mv .zshrc .zshrc.bak
mv .Xdefaults .Xdefaults.bak

non ha aiutato.

urxvt + bash funziona bene così come xterm + zsh.

versione zsh: 4.3.11-4ubuntu2.is.3ubuntu1 versione rxvt-unicode: 9.09-3

Qualche idea su come risolvere questo problema?

Risposte:


19

Prova ad aggiungere quanto segue al tuo .zshrc:

TERM=xterm

Questo mi ha risolto FWIW.
seth,

5
Migliore utilizzo TERM=xterm-256colorper supportare 256 colori.
xuhdev,

1
Non stai semplicemente evitando il problema, usando xterm invece di urxvt?
villasv

1
Sì, ha funzionato anche per me. Uso il sottosistema Windows per Linux (WSL) con Ubuntu e ZSH e mi ha infastidito per così tanto tempo. Grazie per questo.
Dave Reid,

7

In zsh, cosa bindkey | grep deletedice? Queste sono le linee che ottengo:

"^D" delete-char-or-list
"^H" backward-delete-char
"^[3;5~" delete-char
"^[[3~" delete-char
"^?" backward-delete-char

Dovresti avere "^?" in quanto rappresenta backspace. Altrimenti ... puoi chiamarlo bindkey "^?" backward-delete-charal prompt di zsh per inserirlo.

Questo risolve il problema?


1
bindkey | grep elimina "^ D" delete-char-or-list "^?" backward-delete-char
studente

1

È inoltre possibile aggirare il problema impostando

stty erase '^?'

Ecco alcuni dettagli sul comportamento deviante di alcuni emulatori terminali (che è il motivo per cui alcuni emulatori hanno questo problema): Linux Backspace / Delete mini-HOWTO .


1

È un vecchio thread e forse nessuno lo vedrà, ma il problema per me era nel .Xresourcesfile. Avevo interpretato male il URxvt*termNameparametro come la stringa che sarebbe diventata il urxvttitolo della finestra. È in effetti ciò che diventa la $TERMvariabile d'ambiente, a meno che la shell non la ignori (bash fa).

La mia soluzione era quella di aggiungere URxvt*termName: xterm-256coloral ~/.Xresourcesfile. Come per qualsiasi modifica a questo file, sarà necessario eseguire xrdb -merge ~/.Xresourcese riavviare completamente urxvt(compresi i urxvtdprocessi daemon) per mostrare le modifiche.

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.