为什么 ed 从文件的最后一行而不是第一行开始?
当您记得 ed 的大部分行为是为了与打印机交互时,它的大部分行为都是有意义的,但不是这样。因为我相信它将整个文件读入内存,所以它甚至不是 IO 查找的东西。
答案1
一般来说,在Ed中运行任何命令后,光标(即当前行)会放置在受该命令影响的最后一行上。当 ed 启动并加载文件时,这相当于该e
命令。该e
命令影响整个缓冲区,因此它将当前行设置为最后一行。
将光标置于最后一行是插入或加载文本后最有用的事情:通常,用户要做的下一件事是在此之后写入更多文本。所以,事实上,并不是加载文件遵循将光标放在末尾的一般规则,而是加载文件证明了将光标放在末尾的一般规则。
现代编辑器要么将光标放在开头,要么记住最后的位置。 Ed 还不够先进,无法记住最后的位置。如果用户要对文件进行某种全局编辑操作,则将光标放在开头是有意义的,但如果用户要继续在上次中断的地方写入,则没有意义:这最有可能发生在最后。 Ed 优先考虑最简单的操作(继续写作)而不是更复杂的操作,这是良好的用户界面设计。
前任保留了这种行为。我不知道为什么 Vi 一开始就把光标放在文件的开头。