
При запуске приложения командной строки (на $ 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