В bash на RHAS4, почему нажатие кнопки удаления переключает регистр вместо удаления?

462
mpontillo

У меня есть старая коробка RedHat, над которой мне нужно поработать:

$ lsb_release -a LSB Version: 1.3 Distributor ID: RedHatEnterpriseWS Description: Red Hat Enterprise Linux WS release 4 (Nahant Update 7) Release: 4 Codename: NahantUpdate7 

У меня серьезные проблемы с подсказкой оболочки. (bash) В частности, если я наберу следующее в командной строке:

$ abcdefghijklmnopqrstuvwxyz 

... тогда, если я вернусь m, например, к персонажу и нажму Delete, я получу следующее:

$ abcdefghijkLMNopqrstuvwxyz 

(Но это ухудшается. Если я тогда стрелу вокруг больше, это переворачивает только одну букву за раз.)

Я сравнил свои sttyнастройки с машиной с Ubuntu, где она работает нормально, и я не вижу существенной разницы. Они заключаются в следующем:

$ stty -a speed 38400 baud; rows 58; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke 

Это сводит меня с ума. Есть что-нибудь еще, что я должен посмотреть? Что может быть причиной этого?

1

2 ответа на вопрос

4
mpontillo

Это имеет смысл сейчас ...

В .profileмоей компании использовалась случайная строка, так как многие все еще используют ksh:

set -o vi 

Ну, угадайте, что произойдет, viесли вы печатаете ~? Это верно, это меняет дело! И угадайте, что произойдет, если вы печатаете 3~? Это меняет регистр на 3 символа! (Хотя я до сих пор не уверен, чтобы объяснить непоследовательное поведение, где иногда это меняет один, а иногда это меняет 3 ...)

В любом случае удаление set -o viиз моего .profile решило проблему.

Я бы сказал «Ой», если бы система комментариев позволила мне. innaM 14 лет назад 0
1
innaM

Есть ли .inputrcфайл в вашем домашнем каталоге? Если нет, попробуйте создать один с этим содержанием:

"\e[3~": delete-char 

Если есть такой файл, может быть, он что-то не должен делать?

Спасибо за ответ. У меня нет ~ / .inputrc. Я добавил один с предложенным вами текстом, и он меняет поведение; теперь подсказка меняется на (например) «(arg: 3) abcefg», когда я набираю «abcdefg» и возвращаю стрелку назад к «d» и нажимаю «удалить». Однако после этого он возвращается к старому поведению с изменением регистра. mpontillo 14 лет назад 0
Объект "(arg:" появляется до того, как вы нажмете DEL? innaM 14 лет назад 0
Похоже, что приглашение "(arg: N)" появляется в режиме vi при вводе некоторой комбинации "# ", хотя я не использовал эту функциональность, поэтому я не уверен, что именно это сделано. Кстати, спасибо за разложение ключа удаления на его escape-последовательность; это помогло мне решить проблему. mpontillo 14 лет назад 0

Похожие вопросы