在终端里读输入,怎么实现免回车读取?

想在终端里做个终端,就是在终端里用julia xxx.jl进入一个循环,在循环里不仅可以输入命令和退出,还可以上下找命令、灰色显示猜测命令、TAB自动补全等,如果用readline(stdin)必须回车才会读值,显然不能用。

据我所知,命令行操作系统给的设置都是必须回车才会读值,Base中(包括C/C++标准库)应该没有提供相关函数
那只能调用console相关api,据我所知windows下提供了一个getch函数获取一字节的输入数据,或许有用
相关实现可以考虑参考REPL代码

1 个赞

我转了一圈,英文社区也有类似的提问,结论是要么用现有包,要么面向API编程,看来上下左右tab这类操作julia并不能直接和简便地写(我尽可能不调用包,clean code原则之一)。所以我放弃了,用户手动敲完整命令算了。