现在完成进行时
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 + 动词-ing | They’ve been talking all morning. |
| 否定式 | 主语 + haven’t/hasn’t been + 动词-ing | He 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 long | How 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),就换用现在完成时的一般式。