我怎样才能实现一个Python函数在Unix系统(最低限度,只有Linux)上运行,它类似于内置的input()
,但支持使用escape键取消输入文本?
- 在命令行中输入单行文本(也可以输入多行)
- 具有简单的行编辑功能(左/右箭头键,退格键删除字符,control-a跳到行首,control-e跳到行末,control-w删除单词)
- (并且允许从X/wayland中的主选择或剪贴板选择粘贴--我想这不需要特殊的支持)
- 按回车键提交文本
- 或者按escape键退出并取消(如果我不能区分这与用户输入空字符串并按return键之间的区别,这是可以的,但并不理想)
我怎样才能做到呢?
我尝试过curses,但那是针对全屏输入的--似乎很难实现不清除屏幕的东西。
我试过termios,但我不知道如何实现退格键,我怀疑我可能最终想要比现在明显的功能多一点的功能--例如control-w,它在我的linux机器input()
上实现了删除整个单词,我不需要重现input()行为的每一个细节,但需要类似的一些东西(见上面的列表)。
1条答案
按热度按时间bqf10yzr1#
例如,您可以使用readline
这将考虑您的
~/.inputrc
设置。您可以配置editing-mode
来控制使用哪个默认的键绑定集。默认情况下,Readline在Emacs编辑模式下启动,其中的击键与Emacs最相似。此变量可以设置为emacs
或vi
。