现在完成进行时

B1 Present perfect continuous 32 / 50

概要

现在完成进行时(have/has been + 动词-ing)用来表示一个动作从过去开始,一直持续到现在,或者刚刚结束但现在还能看到结果。它强调的是这个动作本身以及它持续了多久。

规则

这个时态由 have/has + been + 动词的 -ing 形式构成。

主要有两种用法:

用法含义例句
1. 仍在进行一个从过去开始、现在仍在继续的动作。常常和 for / since 连用。I’ve been waiting for an hour. / She’s been working here since May.
2. 刚刚结束,留下可见的结果一个刚刚结束的动作,但现在还能看到或感觉到它的影响。I’m tired because I’ve been running. / Your eyes are red - have you been crying?

用 for 表示一段时长(for two hours, for ages)。用 since 表示一个起点(since 9 o’clock, since Monday)。

这个起点也可以是一整个从句,说明这个动作是从哪件事开始的。从句的动词用一般过去时,尽管主句动词仍然是现在完成进行时;ever since 是 since 的强调说法。

She’s been working here since the shop opened.(而不是 since the shop has opened)

要小心状态动词(表示状态而不是动作的动词:know, like, love, want, need, believe, have = 拥有,understand)。它们通常不用进行时,而要用现在完成时的一般式。

I’ve known her for years.(而不是 I’ve been knowing her…)

形式与结构

类型结构例句
肯定式主语 + have/has been + 动词-ingThey’ve been talking all morning.
否定式主语 + haven’t/hasn’t been + 动词-ingHe hasn’t been sleeping well.
问题Have/Has + 主语 + been + 动词-ing?Have you been waiting long?
简答Yes, I have. / No, she hasn’t.Have they been studying? - Yes, they have.
搭配 How longHow long have/has + 主语 + been + 动词-ing?How long have you been learning English?

缩略形式:I’ve / you’ve / we’ve / they’ve been…,he’s / she’s / it’s been…(这里 ‘s = has)。

-ing 拼写提醒: make -> making,sit -> sitting,lie -> lying,study -> studying。

例句

English说明
How long have you been learning English?强调一个仍在进行的动作持续了多久。
We’ve been living in Madrid since 2019.从过去开始,现在仍然成立;since + 起点。
Sorry I’m late - have you been waiting long?动作一直持续到说话的这一刻。
The ground is wet because it’s been raining.刚刚停止;湿漉漉的地面就是看得见的结果。
You look exhausted! Have you been working all night?询问能解释现在这个状态的某个动作。
My sister has been studying Japanese for three years.For + 一段时长。
Ever since the rules changed, we’ve been queuing outside.起点是一个事件,用一般过去时;ever since 起强调作用。
I’ve been trying to call you all day.在一段时间里反复发生、一直持续到现在的动作。

常见错误

  • I’ve been knowing him for years. -> I’ve known him for years.——状态动词(know, like, have = 拥有)要用一般式,不用进行式。
  • I am waiting for an hour. -> I’ve been waiting for an hour.——表示一直持续到现在的时间要用现在完成时,不用一般现在时。
  • She’s been work here since May. -> She’s been working here since May.——别忘了 been + -ing 形式。
  • I’ve been living here for 2015. -> I’ve been living here since 2015.——起点用 since,时长用 for。
  • How long are you learning English? -> How long have you been learning English?——用这个时态来问“how long”到现在为止的情况。

学习提示

  • 问问自己:是强调动作,还是强调结果? 如果想强调动作本身及其持续时间,用进行式(I’ve been reading);如果想强调完成或数量,用一般式(I’ve read three books / I’ve read it twice)。
  • “现在有看得见的证据”是用进行式的一个强烈信号:湿漉漉的地面、红肿的眼睛、上气不接下气、手上沾着油漆。
  • For = 多长时间;since = 什么时候开始的,可以是一个时间点(since Monday),也可以是一个一般过去时的从句(since we moved in)。两者都能和这个时态搭配。
  • 如果这个动词表示的是状态而不是动作(know, believe, own),就换用现在完成时的一般式。