MobaXterm Backspace отправляет ^H
Длинный вопрос: я пытаюсь протестировать мой простой HTTP-сервер, набирая множество запросов по Telnet и наблюдая за реакцией сервера. Но когда я делаю опечатку и нажимаю клавишу Backspace, чтобы стереть предыдущий символ, MobaXterm отправляет ^H
вместо удаления символа из строки. Когда я нажимаю Shift+Backspace, все работает так, как я хочу, но через некоторое время это становится очень раздражающим... Итак, есть ли решение, которое просто меняет функциональность Backspace?
Короткий вопрос: можно ли заставить backspace удалять символ вместо отправки ^H
?
4 ответа
MobaXterm также предлагает установить флажок "Backspace send ^H", который вы можете попробовать включить (в глобальных настройках MobaXterm -> вкладка "Терминал").
Если вы используете сохраненный сеанс, вам нужно будет отредактировать этот сеанс, перейдите на вкладку "Настройки терминала" и установите флажок "Backspace send ^H".
Ключ с надписью "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
) и удалить (DEL = 127, часто отображается как^?
). - другая конфигурация терминала (настройка диалога в разделе " Клавиатура" раздела " Терминал ").
xterm предоставляет третий механизм, которого, по-видимому, нет в PuTTY (см. Последовательности управления XTerm):
CSI ? Pm h
DEC Private Mode Set (DECSET).
Ps = 6 7 -> Backarrow key sends backspace (DECBKM).
Если PuTTY реализует это, ваше приложение может напрямую установить поведение терминала. Скорее, во время инициализации PuTTY проверяет начальное состояние своей конфигурации и (в зависимости от платформы) также проверяет (например, xterm) режимы терминала, установленные в устройстве, и выбирает режим возврата или удаления, который вы можете приспособить или изменить, как отмечено.
В MobaXterm существует возможность изменить поведение клавиши возврата. (ответ ниже основан на MobaXterm Personal v11.1)
Опция называется: "Backspace передает CTRL-H"
Опция отображается только в конфигурации для конкретного сеанса, а не в глобальных настройках: создайте / отредактируйте новый / существующий сеанс пользователя типа SSH в Moba и получите доступ к его настройкам. На вкладке "Настройки терминала" снимите флажок "Backspace send CTRL-H", сохраните и перезагрузите.
Можно ли изменить поведение для всех сеансов? Я еще не нашел способ изменить поведение в глобальном масштабе. MobaXterm использует код Putty, который имеет соответствующую настройку переключения для поведения клавиши возврата, но, к сожалению, это не отображается в окне глобальных настроек в MobaXTerm. В любом случае, не в бесплатной версии.
Профессиональная версия Moba предлагает отдельный инструмент настройки, который показывает вам больше параметров конфигурации. Я подозреваю, что это может привести к настройке MobaXTerm.ini. Я не могу проверить.
Альтернатива: измените поведение на сервере.ssh <server>
с локального терминала, не подключенного ни к какому сеансу пользователя, применяется глобальная настройка - отправка ^H
, Это вызывает некоторые проблемы с редакторами, а именно emacs, и всем остальным, использующим readline, как telnet. Обходной путь - исправление поведения терминала на удаленном сайте с помощью команды stty (в debian это входит в пакет coreutils
):
# interpret incoming ^H as backspace/erase
stty erase \^H
Однако я не рекомендую добавлять это в ~/.bashrc, если вы входите через другие виды терминалов. Таким образом, ключ конфигурации пользовательского сеанса - лучший подход.
Прошло некоторое время с момента обновления, но в MobaXterm 21.3 изменилось несколько вещей:
- Если вы зайдете в «Настройки->Конфигурация->Терминал», вы увидите, что теперь есть глобальная настройка.
- Если вы измените это поведение, имейте в виду, что любые уже созданные сеансы необходимо будет изменить вручную, если вы хотите, чтобы их конфигурации были такими же. Для каждой сохраненной сессии «Настройки->Вкладка «Настройки терминала»-> «Backspace отправляет ^H» также снимите флажок здесь.