现在完成进行时
从过去某时开始一直持续到现在的动作,可能刚停也可能还在继续。
have/has been + doing
要点
  1. 强调动作的持续,常与 for / since 连用。
  2. 与现在完成时的区别:进行时强调「一直在做」,完成时强调「做完了」。
  3. 常用来解释现在的状态:累了、脏了、手酸了。
  4. 瞬间动词(buy、die、begin 等)不能用于进行时。
  5. 它不排除"刚刚停下":I have been cleaning the room 可能是正在擦,也可能是刚放下抹布 —— 做没做完、还在不在做都不由时态定,要看上下文和有没有报出结果。
  6. 一旦报出数量、次数,就改回现在完成时:I have read twenty pages.(不说 have been reading twenty pages)/ She has written three letters this morning.
  7. live、work、study、teach 这类动词,两种形式意思几乎一样:I have lived here for two years = I have been living here for two years —— 只有强调"一直没停"时才非用进行时。
例句
I have been waiting for you for half an hour.
我已经等你等了半小时了。
She has been studying English since she was ten.
她从十岁起就一直学英语。
He is tired because he has been working all day.
他很累,因为他工作了一整天。
We have been looking for a flat these days.
这些天我们一直在找房子。
Her eyes are red because she has been crying.
她眼睛红了,因为她一直在哭。
Her English has improved a lot because she has been watching English films.
她英语进步很大,因为她一直在看英语电影。
易错提示
  • for 接一段时间,since 接一个时间点,两者都能与完成时连用。
  • 不能说 I have been buying it —— buy 是瞬间动词,没有「一直买」的说法。
  • since 后面那个从句自己用一般过去时(since we met last year / since he was ten),完成进行时只出现在主句 —— 两头都挂 have 就多了。
  • 瞬间动词在这里同样是禁令:不能说 I have been buying it;状态动词也不能(I have been knowing him 错,写 I have known him for years)。