過去 + 完成 = 過去完成式

  • 現在式描述「現在狀況」,過去式描述「過去狀況」,未來式描述「未來狀況」。
  • 現在進行式描述「內含發生中動作的現在狀況」。過去進行式描述「內含發生中動作的過去狀況」。未來進行式描述「內含發生中動作的未來狀況」。
  • 現在完成式描述「內含已完成動作的現在狀況」。過去完成式描述「內含已完成動作的過去狀況」。未來完成式描述「內含已完成動作的未來狀況」。
  • 現在完成進行式描述「內含快完成動作的現在狀況」。過去完成進行式描述「內含快完成動作的過去狀況」。未來完成進行式描述「內含快完成動作的未來狀況」
  • → 點此回到文法地圖 ←

過去式 vs 完成式

「現在完成&過去式」兩者都有過去動作,因此很容易搞混。兩者的差異在於,過去式描述的是「過去的狀況」,而現在完成式在描述的是「現在的狀況」。

請注意,「現在完成式」描述的現況,是一個內含已完成動作的特殊現況!分成「經驗&影響」。例如 I’ve been to Japan twice. = 我已經去過日本兩次。本句描述的特殊現況內含去日本兩次的經驗。I’ve lost my keys. = 我已經弄丟了鑰匙。本句描述的特殊現況內含丟了鑰匙的影響,暗指鑰匙現況仍丟失中

相對地,如果使用現在式,那也是現況,然而是用於描述一個「事實」。例如 I lose my key. = 我丟了鑰匙。本句描述講者突然發現自己丟了鑰匙的現況,沒有內含任何已完成動作,也因此在中文理解時不需要「已經」。

最後,若使用簡單過去式,講者的重點就不在現況,也沒有對現況提供任何資訊。例如 I lost my keys then. 中文翻成「我那時弄丟了鑰匙」。這句話單純在講一個無關現在的過去狀況,可能是在講一個故事,且暗指現在鑰匙找到了沒這件事「不知道也不重要」。

再舉個例子。I sent the email to her last week. 本句重點在於「上週」發生了一件事情,不是這週 ,也不是上上週。相對地 I have sent the email to her last week. 這句話的重點在於「現在」的狀況是一個特殊的,包含了一個「已經寄出信」的現在,而不是那個還沒寄出信的平行時空的現在。其實若讀者從中文的角度去想也是如此的。試比較:我上週寄信給她 vs 我上週「已經」寄信給她了。請仔細玩味這個「已經」的用處,是不是把重點從「過去的一件事」,變成了「現在的狀況」,很神奇對吧!?

完成式 — 深度教學

現在完成式因為「將過去和現在連起來」,所以在描述很近的過去時,也就是現在和過去很近時,也會使用現在完成式。例如 The storm has just knocked out the electricity in half the city. 本句的完成式暗指事情發生在很近的過去,且暗指現在依然沒電。反之,若是使用單純的過去式,那就對現在沒影響。例如 The storm just knocked out the electricity. 本句話因為對現在沒影響,所以必然是現在已經有電了才會這麼說。

問經驗/第一次/最高級的完成式可加上 ever 來強調。例如 Have you ever eaten an insect? 本句在問經驗。This is the first time she has ever applied for a grant. 本句強調第一次經驗。It is the most delicious thing I have ever eaten. 本句強調最高級。

完成式的時間陷井

未結束 VS 已結束

因為現在完成式的時態圖顯示,其時間是從過去延續到現在,所以時間副詞常常使用未結束的時間。例如 I’ve written 50 emails today. 其他常見的未結束時間如:this morning/week/month/year/century, today, lately, recently, so far. 注意,若講話的時間是在下午,那表示 this morning 的時間已經過去了,也不可使用完成式。

for & since 最常被用於未結束時間。例如 I’ve worked since 6 a.m. / for 10 hours. 此外,since 還可以接一句話來描述那個時間點。例如 I’ve met thousands of students since I started teaching. 注意,因為 since 後接的是「過去的一個時間點」,所以使用過去式。

未結束事件也可視為未結束時間。例如 I’ve completed 3 out of 5 chemistry courses I am required. 因為全部需要5個學分,而講者目前只完成3個,因此需使用完成式。

現在完成式不可接已結束時間副詞。例如 I’ve watched the movie so many times in high school (X). 只有過去式可接已結束的時間。例如 I watched the movie so many times in high school (O). 常見的結已結束時間如:yesterday, 3 hours/days/months ago, last night/week/month/year, in 2010, when I was younger, in high school

一輩子的經驗 vs 過去的經驗

中文母語者最常犯的錯,就是在寫經驗時,寫加上一段過去的時間來描述該經驗是「某段時光」的經驗。例如 I’ve been to Japan twice in high school. => (X)。這個錯誤的原頭,是因為在英語的邏輯裡,個人的經驗是「一輩子」的經驗。例如 I’ve been to Japan twice (in my whole life) => (O) 也就是說,完成式在講經驗時,其實早就有一個隱藏起來的時間(一輩子),所以不能再加時間上去。

若一定要把這個經驗加上一段過去的時間,那就變成是在描述過去發生的事實,此時應使用過去式。例如 When I was a high school student, I went to Japan twice. = 高中時我去過日本兩次。否定句時應利用 not once/never 描述那段時間內一次經驗都沒有。例如 I didn’t once go to Japan in high school. = I never went to Japan in high school = 我不曾一次去過日本。注意,once 英語的習慣位置應放在 didn’t 後面。

到現在時間

Recently/Lately = 最近。於時態圖上是一段直到現在的時間,所以應使用完成式描述發生數次的場景。而 just = 剛剛。於時態圖上僅代表一個點,因此只能用於發生一次的狀況。例如:The media has faced criticisms for its reporting recently. => (O) 完成式接 recently/lately,此外本句暗指最近一段時間一直有批評。 The media faced criticisms for its reporting lately. => (X) 過去式不可接 lately 這個一大段「直到現在的時間」。

I’ve watched the movie so many times over/in the past year. => (O) 這邊的 past year = 過去一年,也就是從今天起算往前365天,是一段直到現在的時間,所以可以使用完成式。注意,over 強調「多次」,因此在本句的情境下是更好的選擇。

I’ve watched the movie so many times last year. => (X) 這邊的 last year 指的是「上一年」。也就是說,如果今天是二月一號,那麼 last year 就是個「已結束時間」,所以不可用完成式。

現況反轉的時間

描述過去經驗還有個特殊用語 used to = 以前常。和完成式的差異只在於現況反轉。例如 I used to smoke in high school. = 我以前常抽煙(但現在不抽了)。I have often smoked since high school. = 我從高中開始常抽煙(現在也常抽)。I often smoked in high school. = 我高中常抽煙(未指出現況)。詳參考 → 不完成式 = Used to & Would🔗

過去完成式

過去完成式是用來描述過去的過去,需要有一個過去時間參考點。通常會利用時間副詞帶出參考點。例如 When I got home, my cat had eaten her food. 本句被吃掉的事件是在過去時間參考點「到家」之前。Until 也是常見的時間參考點。例如 Until I met Tom, I had never been loved. = 遇到Tom之前,我從沒被愛過。本句因為「被愛」這件事是在過去時間參考點「我遇到他」之前,所以使用過去完成式 had。過去事件也可以當參考點。例如 She was crying because someone had stolen her money. 本句沒有時間副詞帶出時間,直接利用「哭」這個過去事件為參考點。

若句中已經有時序詞(after, before, and then) 來描述事件發生的前後順需,就不一定需要使用過去完成式。例如 After we had eaten breakfast, we left for our trip. = After we ate breakfast, we left for our trip. 本句雖然有過去的過去概念,然而 after 已經把過去的順序點出來了,所以可以不用寫過去完成,直接寫過去式 ate 即可。

They find that certain high school courses they hadn’t paid attention to are very important. 在這個例句中,沒有過去式卻使用了過去完成式,那是因為 Adam 以高中課程做過去事件參考點,十分特別!

有時序詞就不需要再使用過去完成式,包括 before, after, by the time, as soon as, previous, until。例如 As soon as the mouse ran out of the hole, the cat caught it instantly. 這邊因為 as soon as 的意思是「一…就…」,所以時序上是老鼠先跑出來,然後貓再抓,所以理論上老鼠跑出來是「過去的過去」應使用過去完成式。然而因為 as soon as 本身就有時序概念,所以不一定需要用 had。而且依照簡潔的原則來說,正常情況下最好是不要寫。特殊的狀況是,若講者真的很想講清楚時序,那麼就可以把時序詞和過去完成式一起寫出來。例如 As soon as the mouse had run out of the hole, the cat caught it instantly.

Although the previous meeting (had) ended badly, the result was good. 這句話是因為 previous 已經把時間點放在過去了,所以不一定要再使用 had 過去完成式來調整時間點,可直接使用過去式。

總複習

Quiz