MobaXterm Backspace отправляет ^ H

7664
DutChen18

Длинный вопрос: я пытаюсь протестировать мой простой HTTP-сервер, набирая по Telnet много запросов и выясняя, как сервер реагирует. Но когда я делаю опечатку и нажимаю клавишу Backspace, чтобы стереть предыдущий символ, MobaXterm отправляет ^Hвместо удаления символа из строки. Когда я нажимаю Shift + Backspace, все работает так, как я хочу, но через некоторое время это становится очень раздражающим ... Итак, есть ли решение, которое просто меняет функциональность Backspace?

Короткий вопрос: можно ли заставить backspace удалять символ вместо отправки ^H?

5

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

10
Didier

MobaXterm также предлагает установить флажок «Backspace send ^ H», который вы можете попробовать включить (в глобальных настройках MobaXterm -> вкладка «Терминал»).

Если вы используете сохраненный сеанс, вам нужно будет отредактировать этот сеанс, перейдите на вкладку «Настройки терминала» и установите флажок «Backspace send ^ H».

У меня нет этой опции ни на одной из вкладок терминала. Использование v7.2 на Windows 8. rmf 8 лет назад 0
3
Thomas Dickey

Ключ с надписью «Backspace» является предметом спора. Технически, его следует отправлять ^Hпросто потому, что это имя управляющего символа ASCII. Другие отличаются, потому что история этих функций повлияла на их ожидания (см. Почему мой ключ удаления не работает? ).

В дискуссии, где вы говорите, что печатаете, обычное значение (без пояснений) состоит в том, что вы запустили терминал, а затем запустили программу в терминале. Для этого случая имеется соответствующая инициализация терминала, например, с использованием оболочки и программы, такой как stty. Это выполняется на локальной машине (где вы печатаете). MobaXterm предоставляет stty начиная с версии 3.2 (2011-05-30).

Учитывая, что, если MobaXterm отправляет ^H, инициализация вашего терминала должна использовать

stty erase \^H 

Посмотрите, например, что делает команда stty erase ^H? ,

С другой стороны, вы могли бы (не очевидно, в вопросе) создать ситуацию, когда терминал запускается таким образом, чтобы исключить использование sttyдля согласованности приложения и терминала. Или у вас может быть какая-то другая причина для изменения поведения клавиши возврата. PuTTY (как и xterm) предоставляет два механизма для этого:

  • один (первоначально реализованный в rxvt) позволяет использовать shiftмодификатор для переключения кода, отправляемого из «backspace» между ASCII backspace (BS = 8 = ^H) и delete (DEL = 127, часто отображается как ^?).
  • другая конфигурация терминала (настройка диалога в разделе « Клавиатура» раздела « Терминал »).

xterm предоставляет третий механизм, которого, по-видимому, нет в PuTTY (см. Последовательности управления XTerm ):

CSI ? Pm h DEC Private Mode Set (DECSET). Ps = 6 7 -> Backarrow key sends backspace (DECBKM). 

Если PuTTY реализует это, ваше приложение может напрямую настроить поведение терминала. Скорее, во время инициализации PuTTY проверяет начальное состояние своей конфигурации и (в зависимости от платформы) также проверяет (например, xterm) режимы терминала, установленные в устройстве, и выбирает режим возврата или удаления, который можно приспособить или изменить, как отмечено.

Если я ничего не получаю, это команда, которую вы вводите в терминале Unix / Linux, Мой HTTP-сервер определенно не является терминалом Unix / Linux. Прочитайте длинный вопрос ... DutChen18 8 лет назад 0
Спасибо за разъяснение, я неправильно понял ваш первый ответ. Последний вопрос: где я могу отредактировать инициализацию моего терминала и добавить `stty erase \ ^ H`. Моя проблема уже решена, но если я не найду ответ на этот вопрос, это будет беспокоить меня, пока я не забуду об этом ... DutChen18 8 лет назад 0
MobaXterm использует bash; если вы добавите ваши команды stty в `.bashrc` в начальном каталоге окна терминала, они будут выполняться в MobaXterm. Проверка копии сейчас (персональная версия 7.7) ... она настроена на использование `^ H`. Нажатие control + backspace отправляет `^?`. В этой версии нет флажка для возврата, но использование control + backspace работает достаточно хорошо. Thomas Dickey 8 лет назад 0