5

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


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

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

Ответов: 2

11

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

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

У меня нет этой опции ни на одной из вкладок терминала. Использование v7.2 в Windows 8. (6 мая '16 в 17:16)
3

Ключ с надписью «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. Прочитайте длинный вопрос ... (30 октября 15 в 5:00)

Если я ничего не получаю, это команда, которую вы вводите в терминале Unix/Linux, Мой HTTP-сервер определенно не является терминалом Unix/Linux. Прочитайте длинный вопрос ... (30 октября 15 в 5:00)

Спасибо за разъяснение, я неправильно понял ваш первый ответ. Последний вопрос: где я могу отредактировать инициализацию моего терминала и добавить stty erase \ ^ H . Моя проблема уже решена, но если я не найду ответ на этот вопрос, это будет беспокоить меня, пока я не забуду об этом ... (30 октября 15 в 22:19)

MobaXterm использует bash; если вы добавите ваши команды stty в .bashrc в начальном каталоге окна терминала, они будут выполняться в MobaXterm. Проверка копии сейчас (персональная версия 7.7) ... она настроена на использование ^ H . При нажатии control + backspace отправляется ^? . В этой версии нет флажка для backspace, но использование control + backspace работает достаточно хорошо. (1 ноября '15 в 1:38)

Дополнить ответ