Як виправити дивну поведінку задньої області за допомогою urxvt + zsh?


15

Я використовую urxvt в поєднанні з zsh. Однак з моєї нової установки ubuntu 10.04 у мене є така проблема. Якщо я введіть зворотний простір, курсор рухається праворуч (замість видалення символів зліва).

Припустимо, я набрав n символів, після чого натискаючи назад, n-разів переміщує курсор n- позиції ліворуч; якщо я набираю назад, то ще один, курсор більше не рухається.

Якщо я друкую ліву стрілку, нічого не відбувається, якщо я друкую стрілка вправо потім виникає у будь то символ.

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

не допомогло.

urxvt + bash працює чудово, як і xterm + zsh.

zsh-версія: 4.3.11-4ubuntu2.is.3ubuntu1 rxvt-unicode версія: 9.09-3

Будь-яка ідея, як це виправити?

Відповіді:


19

Спробуйте додати в свій .zshrc:

TERM=xterm

Це зафіксувало це для мене FWIW.
Seth

5
Краще використовувати TERM=xterm-256colorдля підтримки 256 кольорів.
xuhdev

1
Чи не просто ви уникаєте проблеми, використовуючи xterm замість urxvt?
villasv

1
Так, це працювало і для мене. Я використовую підсистему Windows для Linux (WSL) з Ubuntu та ZSH, і це мене так довго дратує. Дякую за це.
Дейв Рейд

7

У zsh, що bindkey | grep deleteговорить? Ось такі рядки я отримую:

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

Ви повинні мати "^?" як це представляє зворотну простір. Якщо ні, то ви можете зателефонувати bindkey "^?" backward-delete-charу запрошення zsh, щоб помістити його.

Чи вирішує це проблему?


1
bindkey | grep delete "^ D" delete-char-or-list "^?" backward-delete-char
студент

1

Ви також можете подолати проблему, встановивши

stty erase '^?'

Ось деякі подробиці про девіантну поведінку певних емуляторів терміналів (саме тому певні емулятори мають цю проблему): Linux Backspace / Delete mini-HOWTO .


1

Це стара нитка, і, можливо, ніхто цього не побачить, але проблема для мене була у .Xresourcesфайлі. Я неправильно трактував URxvt*termNameпараметр як рядок, який став би urxvtзаголовком вікна. Це насправді те, що стає $TERMзмінною середовища, якщо тільки оболонка не переосмислює її bash.

Моє рішення було додати URxvt*termName: xterm-256colorдо ~/.Xresourcesфайлу. Як і будь-які зміни цього файлу, вам потрібно буде запустити xrdb -merge ~/.Xresourcesі повністю перезапустити urxvt(включаючи urxvtdдемон-процеси), щоб зміни відображалися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.