全部语法课

第 50 课 · 第 4 阶段: 时态与情态动词

过去完成进行时

中级

Past perfect continuous

构成与用法

had been + -ing——一直持续到过去某一时刻的活动

1.形式

过去完成进行时 = had been + 动词-ing。Had 对所有主语都一样,所以 he / she / it 也不需要任何变化。

句型例句
肯定式S + had been + V-ingShe had been working. / I'd been waiting.
否定式S + hadn't been + V-ingThey hadn't been sleeping well.
疑问式Had + S + been + V-ing?Had you been waiting long?
问多长时间How long had + S + been + V-ing?How long had he been living there?
简略回答Yes, S had. / No, S hadn't.Yes, I had. / No, she hadn't.

口语中 had 通常缩写成 'd:I'd been、she'd been、they'd been。'd 紧跟在 been 前面时,一定是 had。要把 /d/ 读清楚——不读的话,I'd been 听起来像 I been,听的人就听不出过去的意思了。

2.什么时候用

1. 一直持续到过去某一时刻的活动——常和 for、since、all day、how long 连用

  • By the time the doctor came, we'd been waiting for two hours.

    医生来的时候,我们已经等了两个小时了。

  • Minh had been working at the bank since 2018 when he decided to quit.

    阿明决定辞职时,他已经从 2018 年起在银行工作了。

  • How long had you been learning English before you moved to Canada?

    你搬去加拿大之前学了多久英语?

2. 解释过去的某个情况——在那之前进行的活动(可能刚刚停止)留下了痕迹或结果

  • Her eyes were red. She'd been crying.

    她眼睛红红的,她刚才一直在哭。

  • The road was wet because it had been raining all night.

    路面是湿的,因为下了一整夜的雨。

  • I was exhausted when I got home — I'd been standing all day.

    我回到家时累坏了——我站了一整天。

3. 另一件事发生时仍在进行的活动(那件事常常让它停了下来)

  • Lan had been driving for six hours when she finally stopped for coffee.

    阿兰开了六个小时的车,终于停下来喝咖啡。

  • They hadn't been dating long when they got engaged.

    他们交往没多久就订婚了。

这个时态总需要一个过去的时刻(when I arrived、by the time…、当时的某个情况)作为回看的起点。很多学习者讲过去的故事时误用 have been -ing。如果参照点是现在 → have been -ing;如果是过去某一时刻 → had been -ing。

3.和相近时态比较

Have been -ing 还是 had been -ing? 两者都表示“做某事做了一段时间”,只是终点不同:一个到现在,一个到过去某一时刻。

  • I've been waiting for twenty minutes. Where are you?

    我已经等了二十分钟了,你在哪儿?(到现在为止)

  • I'd been waiting for twenty minutes when she finally replied.

    我等了二十分钟,她才终于回复。(到她回复的那一刻为止)

Was -ing 还是 had been -ing? Was -ing = 在那一时刻正在做;had been -ing = 活动在那一时刻之前一直在进行(可能已经停了)。

  • When I got home, Mum was cooking.

    我回到家时,妈妈正在做饭。(她还在做)

  • When I got home, the kitchen smelled of garlic. Mum had been cooking.

    我回到家时,厨房里一股蒜味。妈妈刚才一直在做饭。(我到之前她在做饭)

Had been -ing 还是 had + V3? Had been -ing 讲的是活动和多长时间;had + V3(过去完成时)讲的是已完成的结果和多少。

had been + -inghad + V3
重点活动,持续了多久结果,完成了什么
问句How long…?How many / How much…?
例句She'd been writing emails all morning.She'd written twenty emails by noon.
完成了吗?不一定是

状态动词(know、believe、own、have = 拥有…)通常不用进行形式,所以即使说的是一段时间,也用 had + V3。

  • We had known each other for ten years when we started the company.

    我们创办公司时,已经认识十年了。(不说:had been knowing)

4.常见错误

  • He had been work there for ten years.

    He had been working there for ten years.

    had been 后面要接 -ing。

  • I was tired because I have been driving all day.

    I was tired because I had been driving all day.

    故事发生在过去(was)→ 用 had,不用 have。

  • By noon she had been reading three chapters.

    By noon she had read three chapters.

    完成的数量 → had + V3。

  • I had been knowing him for years.

    I had known him for years.

    know 是状态动词 → 不用进行形式。

  • How long you had been living there?

    How long had you been living there?

    疑问句中 had 放在主语前面。

  • She had being waiting for an hour.

    She had been waiting for an hour.

    had + been(be 的 V3),不是 being。

例句

  • Tuan's eyes were red because he had been crying for hours.
  • By the time the bus came, we had been waiting for forty minutes.
  • How long had you been looking before you found a job?
  • Nam had been repairing his motorbike all morning, but it still didn't start.
AI 正在听...•App Store 和 Google Play 评分 4.7/5

和 AI 说英语 全天 24 小时

立即下载应用 — 实时发音评分、自然对话、像真人老师一样纠正。

AI 发音评分即时反馈自然对话