過去完成進行式

句型

had + been + 現在分詞

例句:

  • He had been waiting there for more than two hours when she finally arrived. (當她終於抵達時,他已在那裡等了超過兩小時)
  • Had he been waiting there for more than two hours when she finally arrived? (當她終於抵達時,他已在那裡等了超過兩小時嗎?)
  • He had not been waiting there for more than two hours when she finally arrived. (當她終於抵達時,他在那裡並沒有等了超過兩小時)

用法之一:發生在過去的某個動作或某事件持續至過去另一動作或另一事件的時間

我們使用過去完成進行式來表示某個動作或某事件發生在過去且一直持續到以過去簡單式來表示的另一動作或另一事件。for ten minutes, for two weeks 等等,都是可與過去完成進行式連用的時間副詞片語。

例句:

  • They had been talking for over an hour before Carl arrived. (在卡爾到達之前,他們已交談了逾一個小時)
  • Carla had been working at that company for three years when it went out of business. (在那家公司歇業時,卡拉已在該公司工作了三年)
  • How long had you been waiting to get on the bus? (你等多久才坐上公車呢?)
  • Allen wanted to sit down because he had been standing all day at work. (艾倫想要坐下來,因為他整天都站著工作)
  • Tom had been teaching at the university for more than a year before he left for Europe. (湯姆在前往歐洲之前已在這所大學教了逾一年的書)
  • A: How long had you been studying Thai before you moved to Bangkok? (你在搬到曼谷之前已學了多久的泰語呢?)
    B: I had not been studying Thai very long. (我學泰語沒有很久)

用法之二:過去發生的某個動作或某事件的原因

我們可以使用過去完成進行式來表示該動作或事件與過去簡單式的動作或事件的因果關係。

例句:

  • Barry failed the final test because he had not been attending class. (貝瑞期末考不及格,因為他一直沒來上課)
  • Kevin was very tired because he had been washing cars. (凱文非常疲憊,因為他一直在洗車)
  • Amy gained weight because she had been overeating. (艾美體重增加了,因為她一直暴飲暴食)

過去進行式 vs. 過去完成進行式

若句中沒有 for ten minutes, for two weeks, since Thursday 等時間副詞片語,許多英語人士在說話時都會選擇使用過去進行式,而不使用過去完成進行式。然而,由於這會改變句子的意思,因此使用時必須謹慎小心,以免造成意思上的誤解。過去進行式強調該動作發生在過去簡單式的動作或過去某個時間點之前,而在過去簡單式的動作發生時,該動作可能就結束了,亦可能仍在進行中。而過去完成進行式則強調該動作持續到過去簡單式的動作發生時的時間。試研究下面的例句以瞭解它們之間的差異。

例句:

  • He was tired because he was exercising so hard. (他累了,因為他正激烈地運動) - 這句強調他之所以累,是因為他那時候正在運動。
  • He was tired because he had been exercising so hard. (他累了,因為他一直激烈地運動) - 這句強調他之所以累,是因為他已運動一段時間。過去完成進行式的動作在過去簡單式的動作或狀態生時可能還在持續中,但也可能已告結束。

切記非進行式動詞及若干混合動詞的非進行式用法

我們必須記住非進行式動詞及若干混合動詞的非進行式用法,它們不能用於任何進行式時態。換言之,這些動詞必須使用過去完成式,不可使用過去完成進行式。

例句:

  • The bicycle had been belonging to Larry for years before Thomas bought it. (多年來那部腳踏車一直是賴瑞的,後來湯瑪斯把它買走了) (誤)
  • The bicycle had belonged to Larry for years before Thomas bought it. (多年來那部腳踏車一直是賴瑞的,後來湯瑪斯把它買走了) (正)

副詞的位置

always, usually, only, never, ever, still, just 等副詞通常位在助動詞 had 的後面,即位在 had 和過去分詞之間。

例句:

  • Roger had only been waiting there for a few minutes when Stella arrived. (當史泰拉抵達時,羅傑僅在那裡等了幾分鐘)
  • Had Roger only been waiting there for a few minutes when Stella arrived? (當史泰拉抵達時,羅傑僅在那裡等了幾分鐘嗎?)

主動態/被動態

例句:

  • Chef Smith had been preparing the restaurant’s fantastic dinners for two years before he moved to Milan. (主廚史密斯在搬到米蘭之前已為這家餐廳做了兩年精美好吃的晚餐) - 主動態
  • The restaurant’s fantastic dinners had been being prepared by Chef Smith for two years before he moved to Milan. (在主廚史密斯搬到米蘭之前,兩年來這家餐廳精美好吃的晚餐都是由他所做) - 被動態

注意:從上面的例句可知,過去完成進行式的被動態句型顯得十分不自然,因此過去完成進行式鮮少使用被動態。

Q:Andy was very tired because he had been jogging. 這句顯然是在表示因果關係,這種句型的使用時機為何呢?

A:在這句中,had been jogging 是過去完成進行式 (had been + V-ing),而 was 是過去簡單式。根據文法,在過去兩個先後發生的動作中,發生在前的動作要用過去完成式 (had + P.P.),而發生在後的動作用過去簡單式。換言之,過去完成式係用來表示發生在過去某個動作或某一特定時間之前的動作。例如:

  • Mr. Chen had studied English before he moved to San Francisco. (陳先生搬到舊金山之前已學了英文)
  • I had never seen such a beautiful beach before I went to Pescadores. (在我去澎湖之前,我從未看過這麼美麗的海灘)
  • A: Had you ever visited the U.K. before your trip in 2011? (在 2011 年的英國行之前,你有去過英國嗎?)
    B: Yes, I had been to the U.K. once before. (有,我之前去過一次)

然而,若過去完成式的動作一直持續至過去某個動作或某一特定時間,那麼我們須使用過去完成進行式來表示。例如:

  • James had been waiting there for more than two hours when Mary finally arrived. (當瑪麗終於抵達時,詹姆斯已在那裡等了超過兩小時)
  • Carla had been working at that company for three years when it went out of business. (在那家公司歇業時,卡拉已在該公司工作了三年)
  • How long had you been waiting to get on the bus? (你等多久才坐上公車呢?)

由於過去完成式或過去完成進行式的動作都發生在過去簡單式的動作之前,兩者自然很容易就形成因果 (cause and effect) 關係;是故,過去完成式 + 過去簡單式或過去完成進行式 + 過去簡單式,乃成為表示過去發生的兩個有因果關係的動作或事件的完美組合,而問題中的句子 Andy was very tired because he had been jogging. (安迪很疲憊,因為他一直在慢跑) 是屬於過去完成進行式 + 過去簡單式的組合。例如:

  • I did not have any money because I had lost my wallet. (我身無分文,因為我遺失了錢包)
  • Sam knew Bangkok so well because he had visited the city several times. (山姆對曼谷瞭若指掌,因為他已去過曼谷好幾趟)
  • We were not able to get a hotel room because we had not booked in advance. (我們沒有飯店房間可住,因為我們事先沒有預訂)
  • Barry failed the final test because he had not been attending class. (貝瑞期末考不及格,因為他一直沒來上課)
  • Kevin was very tired because he had been washing cars. (凱文非常疲憊,因為他一直在洗車)
  • Amy gained weight because she had been overeating. (艾美體重增加了,因為她一直暴飲暴食)

值得一提的是,在過去完成進行式 + 過去簡單式的情況中,過去完成進行式的動作在過去簡單式的動作或狀態生時可能還在持續中,但也可能已告結束。

事實上,現在完成進行式 (has/have been + V-ing) + 現在簡單式亦是一種表示因果關係的完美句型,它是用來表示最近的動作產生現在的結果或對現在造成的影響。但必須注意是,現在完成式 (has/have + P.P.) 並沒有這樣的用法。例如:

  • My hands are so dirty because I have been working in the garden. (我的雙手很髒,因為我一直在花園工作)
  • Kevin is very tired because he has been jogging/washing cars. (凱文非常疲憊,因為他一直在慢跑 / 洗車)
  • The ground is soaking wet because it has been raining all night. (地面濕透了,因為整晚都在下雨)

同樣地,在現在完成進行式 + 現在簡單式的情況中,現在完成進行式的動作在現在簡單式的動作或狀態發生時可能還在持續中,但也可能已告結束。以 The ground is soaking wet because it has been raining all night. 這句為例,在講這句話的時候,雨可能已經停了,但整晚下雨對現在所產生的結果或造成的影響 (地面濕透了) 是顯而易見的。