在描述一个过去的故事中,一般很少见到用现在完成时(除了直接引语).而你们老师说的 for、since 这类表示时间的词只能和完成时配用并不完全正确.这些词在讲述过去发生的故事中都可以和一般过去时配用.
She and her family have hidden away for nearly 25 months before they were discovered.这句话不对.现在完成时表达到现在说话时一直都有关联的行为,可你这个25年在他们被发现时就已经结束了,而他们是在过去某一个时间被发现的.即便要改成完成时,也要变成过去完成时.如果不强调时间顺序,直接用过去时也是可以的.
could never have kept me spellbound 中的“完成时”是用完成时的句式与 could 构成的一个虚拟语气(并未发生).用 keep 就不是作者的意思了.
过去完成时只用在讲述过去的故事中某一动作之前的事情,概念上和现在完成时并不一样.现在完成时强调的是动作在过去某一时间开始,一直到说话时都有关系.有了结果,就用现在完成时,还在发生,就用完成进行时.谢谢,不过您说的:即便要改成完成时,也要变成过去完成时。那要怎么改?第一句话中也没有表明“过去的过去”之意啊;还有您说的:用完成时的句式与 could 构成的一个虚拟语气(并未发生),"并未发生"如何理解?;还有您还说了:有了结果,就用现在完成时,还在发生,就用完成进行时。这句话怎么理解?第一句话中也没有表明“过去的过去”之意啊——有啊!你看:She and her family hid away for nearly 25 months before they were discovered.这句子里是不是有一个 before?你可以说:had hidden away。 虚拟语气(并未发生):你如果细细品味 could never have kept me spellbound这整句话,作者的意思是他/她一直眷恋着那里的景色。如果不懂句子的虚拟语气,你可能会理解成作者曾记得有一个时间那美好的景色能让作者不着迷(而这不是事实——并未发生)。 有了结果,就用现在完成时,还在发生,就用完成进行时:如“I have learned English"(我已经学过英语),你或许现在已不再学英语了,这就是一个可能结束的状态(结果)。而”I have been learning English"则表明你现在仍然在学。这就是完成进行时表达的意义。