Comment corriger un comportement de retour arrière étrange avec urxvt + zsh?

15

J'utilise urxvt en combinaison avec zsh. Cependant, depuis ma nouvelle installation d'ubuntu 10.04, j'ai le problème suivant. Si je tape en arrière, le curseur se déplace vers la droite (au lieu de supprimer les caractères sur la gauche).

Supposons que j'ai tapé n caractères, puis en appuyant sur backspace n fois déplace le curseur n positions vers la gauche, si je tape backspace puis un de plus, le curseur ne bouge plus.

Si je tape la flèche gauche, rien ne se passe, si je tape la flèche droite après un certain caractère se produit.

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

n'a pas aidé.

urxvt + bash fonctionne aussi bien que xterm + zsh.

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

Une idée de comment résoudre ce problème?

étudiant
la source

Réponses:

19

Essayez d'ajouter ce qui suit à votre .zshrc:

TERM=xterm
ycallaf
la source
Cela m'a corrigé FWIW.
seth
5
Meilleure utilisation TERM=xterm-256colorpour prendre en charge 256 couleurs.
xuhdev
1
N'évitez-vous pas simplement le problème en utilisant xterm au lieu d'urxvt?
villasv
1
Oui, cela a également fonctionné pour moi. J'utilise le sous-système Windows pour Linux (WSL) avec Ubuntu et ZSH et cela m'ennuie depuis si longtemps. Merci pour ça.
Dave Reid,
7

En zsh, que bindkey | grep deletedit-on? Ce sont les lignes que j'obtiens:

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

Vous devriez avoir "^?" car cela représente un retour arrière. Sinon ... vous pouvez appeler bindkey "^?" backward-delete-charà l'invite zsh pour le mettre.

Cela résout-il le problème?

Ehtesh Choudhury
la source
1
bindkey | grep delete "^ D" delete-char-or-list "^?" backward-delete-char
étudiant
1

Vous pouvez également contourner le problème en définissant

stty erase '^?'

Voici quelques détails sur le comportement déviant de certains émulateurs de terminal (ce qui explique d'ailleurs pourquoi certains émulateurs ont ce problème): Linux Backspace / Delete mini-HOWTO .

rotiyan
la source
1

C'est un vieux fil et peut-être que personne ne le verra, mais le problème pour moi était dans le .Xresourcesfichier. J'avais mal interprété le URxvt*termNameparamètre comme la chaîne qui deviendrait le urxvttitre de la fenêtre. C'est en fait ce qui devient la $TERMvariable d'environnement, sauf si le shell la remplace (le bashfait).

Ma solution a été d'ajouter URxvt*termName: xterm-256colorau ~/.Xresourcesfichier. Comme pour toute modification de ce fichier, vous devrez exécuter xrdb -merge ~/.Xresourceset redémarrer complètement urxvt(y compris les urxvtdprocessus démon) pour que les modifications soient affichées.

Blieque
la source