При нажатии клавиш со стрелками в Cygwin появляются «ложные» символы

При нажатии клавиш со стрелками в Cygwin появляются «ложные» символы

При запуске приложения командной строки (на $ gradle runсамом деле, я не знаю, может ли это иметь значение), если я нечаянно нажму стрелку вверх, а затем нажму стрелку вниз, чтобы вернуться в строку приглашения (т. е. в мое приложение), а затем нажму Return и проверю введенную строку, я увижу что-то вроде этого:

No index open
> q
you entered: |a aaaq|

... здесь я набрал " q<Return>" только после использования клавиш со стрелками... но они добавили кое-что забавное перед "q".

Чтобы получить пользовательский ввод, я делаю следующее (Groovy):

response = System.in.newReader().readLine()

Есть ли способ сделать клавиши со стрелками (и другие, которые могут делать что-то подобное) "тихими"? NB Я понятия не имею, применимо ли это также к *nix BASH...

решение1

Поскольку gradle — это программа Java, а Cygwin не имеет собственной машины Java, вы запускаете программу Windows (машину Java) внутри терминала Mintty.

В связи с этим применяются обычные ограничения:

При взаимодействии с программами, использующими собственный API Windows для взаимодействия с пользователем через командную строку («консольный режим»), наблюдается ряд нежелательных эффектов; это проблема несовместимости pty и проблема несовместимости кодировок символов. Это в основном касается всех программ, не скомпилированных в среде cygwin или msys (и обратите внимание, что MinGW не является msys в этом контексте).

Дополнительная информация и некоторые возможные частичные обходные пути приведены на
https://github.com/mintty/mintty/wiki/Tips#inputoutput-interaction-with-alien-programs

Связанный контент