分页: 1 / 1

古老的ed编辑器的问题

发表于 : 2015-01-13 17:05
zhangteng
我正在学习ed编辑器,其中再在ed手册(OpenBSD)中有一个命令描述写到:
(1,$)w file ........
我已经看了好几遍这个地方,还是没弄懂。
我输完文本后,在下一行写了 “.”, 在下下行输入2w,接着下下下行输入q ,结果给出了“?”。
我觉得是不是手册描述错了,如果w 后没有名字的话,不是会自动保存到开始打开的那个文件吗? 为什么会弹出“?”呢 ?希望有人为我解答

问题已经解决

发表于 : 2015-01-15 9:18
zhangteng
当执行完“2w”命令后,编辑器首先删除原文件(在进入ed时被指定的文件)的内容,再将缓冲区第二行的内容写入该文件。当再一次按下“q”时,因为缓冲区中的内容未被清除(2w的作用只是将缓冲区第二行的内容复制到文件,它并不能改变缓冲区的内容),所以编辑器认为还有要执行的任务,所以输出“?”(好像在说,你真的要离开我吗),当再一次按下“q”(下一行)时,它被强制退出。

总结

发表于 : 2015-01-15 9:19
zhangteng
总结:这个问题的解决完全出自对“q”命令的理解和对ed编辑器操作对象的理解。
1.ed编辑器的对象是缓冲区,实体文件只是缺省的保存地方(只按“w” 不输入文件名),除此以外,任何的文本操作只是针对缓冲区。(在按下“2w”或其他的“nw”或“w”之前)
2.当缓冲区有文本时,按下“q”会提示“?”,因为编辑器不知道如何处理那些文本,再按“q”,是你告诉它它应该删除所有内容并退出。

Re: 古老的ed编辑器的问题

发表于 : 2015-01-15 17:25
acheng
谢谢分享。
现在用ed的很少了。一旦熟悉了ed,再用sed就得心应手了