免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1682 | 回复: 3
打印 上一主题 下一主题

如何实现bash那样的行编辑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-11 22:58 |只看该作者 |倒序浏览
在程序跑到中途要进行交互时,使用<STDIN>和 readline, 好像没法进行行编辑。光标不能使用,backspace也必须按ctrl才能使用。跟bash下面直接cat回车后再输入字符并移动光标的效果一样。 但是在bash下面是可以移动光标的,  rlwrap cat 也可以。这个效果应该怎么实现呢?
我尝试了Term::ReadLine, 但一方面那个文档没看懂,另一方面,直接用示例测试发现也无效。perl -d 据说也用了Term::ReadLine, 但是perl -d 下面也一样光标不能用。

论坛徽章:
0
2 [报告]
发表于 2012-04-12 09:32 |只看该作者
没看懂。。。

论坛徽章:
0
3 [报告]
发表于 2012-04-12 09:58 |只看该作者
回复 2# 羲之遗韵

比如说 perl -d ,它会进入一个 DB 为提示符的交互界面,这个时候你可以输入指令。假设现在输入了“123”,然后想把“2”改成“4”,但是一按方向键,光标并不会回到2,而是打印出^[[D;直接按 backspace,也并不会删除4,而会打印出^H。  但是这种现象在做的好一点的shell并不会发生。比如terminal没问题的bash里面,你按方向键向左,那它就是光标向左,而不会变成打印出控制字符。我想做到这样的效果,不知道应该怎么做。
   

论坛徽章:
0
4 [报告]
发表于 2012-04-12 10:07 |只看该作者
也可以对比下cat 和 rlwrap cat, 进行以下操作: 回车,输入“a",输入方向键向左
cat 下面会显示 a^[[D
rlwrap cat 则是光标移动到a前
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP