现在完成进行时(The Present Perfect Continuous /Progressive Tense)
1. 构成
have/has+been+现在分词

2. 功能
ZZ1 现在完成进行时表示一个从过去某时开始发生,一直延续到现在并可能延续下去的动作

Jim has been seeing about a visa for you. 吉姆一直在想办法给你弄一张护照。

Since she left home, I haven't been sleeping at all well. 自她离开家后,我一直睡得很不好。

I've been waiting for an hour but she still hasn't come. 我已等了一个小时,但她还没有来。

Aren't you tired?You've been working here all day. 你不累吗?你都在这里干了一整天了。

I have been cycling to work for the last two weeks. 这两个星期以来我一直骑车上班。

How long have you been doing this work?你做这工作多久了?

How long has it been raining?雨下了多久了?

Now that she is out of job, Lucy has been considering going back to school, but she hasn't decided yet. 露茜失业了,一直在考虑着重返校园,但还没决定。

I won't tell the student the answer to the math problem until he has been working on it for more than an hour. 那名学生解这道数学题超过一个小时还解不出来,我才会告诉他答案。

ZZ2 表示动作刚刚结束(有时指出结果)

I've just been waving good-bye to her. 我一直挥手向她告别。

They have been talking about the book. 他们一直在谈这本书。

He is dead drunk. He has been drinking with his friends. 他酩酊大醉,刚才在同朋友们喝酒来着。

My clothes are wet. I've been walking in the rain. 我的衣服湿了,我一直走在雨中。

A:Where have you been?你去那儿了?
B:I've been watering flowers in the garden. 我去花园里浇花了。

ZZ3 表示某种感情色彩

Who's been telling you such nonsense?谁告诉你这种无稽之谈的?(气愤)

Too much has been happening these days. 这些日子发生的事情太多了。(多事之秋)

You have been deceiving me. 你一直在骗我呢?(气愤)

You have been giving me everything. 你给了我一切。(感激)

ZZ4 表示过去某种愿望未实现,某种企图、希望落空,含有遗憾、不耐烦等情绪

He has been telling me. 他一直想告诉我。(He has tried to tell me.)

She has been advising me. 她一直想劝我。(But she did not succeed.)

They have been going to build a bridge over the lake for years. 数年来,他们一直想在湖上建一座桥。(但未能实现)

He has been going to have the leaking tap fixed for the few days. 几天来,他一直想把那个漏水的水龙头修理一下。(却总没抽出时间修理)

They have been going on an expedition to the woods for a week. The weather has been terrible all the time. 他们一周来一直想去森林中探险而没有去成,天气一直很糟。

ZZ5 表示一个过去动作对现在的影响或造成的结果(相当于现在完成时)

He has been doing too much work. 他做的工作太多了。(现在病倒了)

Who's been insulting you? 谁欺侮你了?(对方可能在哭)

He's been smoking again. 他又吸烟了。(闻到身上有烟味)

The room stinks. Someone's been smoking in here. 屋里有烟味,有人在这里抽烟了。

The girl's eyes are red. She has been crying. 那女孩的眼睛红红的,她一直在哭着。

I have been telling him to study harder. 我一直告诉他学习要更加刻苦。(He should have passed the exam this time, but he failed.)

ZZ6 表示重复(指断断续续,而非一直不停)

We've been discussing the matter several times this year. 我们今年已数次讨论过那件事。

I have been bidding goodbye to some friends today. 我今天同好几个朋友告了别。

We've all along been making mistakes like this. 我们一直犯这样的错误。

She has been phoning Jim every night for the past two weeks. 两个星期以来她每天晚上给吉姆打电话。

Has he been making trouble?他是不是一直在制造麻烦?

3. 现在完成进行时和现在完成时的用法比较
ZZ1 区别A

现在完成时强调的是某个刚刚完成的动作,或某个过去的动作对现在的影响或产生的结果,也可表示延续性;现在完成进行时则强调动作的延续性,有时表示临时性质。例如:

I have thought it over. 我已经考虑过这件事了。
I have been thinking it over. 我一直在考虑这件事。

She has put coal on the fire. 她已经在炉子上加了煤。(这件事已结束)
She has been putting coal on the fire. 她刚才在炉子上加煤。(一直在做这件事)

Be careful! Jim has been painting the door. 当心!吉姆一直在油漆门呢。(油漆尚未干)
Jim has painted the door. 吉姆油漆了门。(油漆可能已干)

他父亲教数学已经10年了。
Her father has taught maths for ten years. (是否延续下去,视上下文而定)
Her father has been teaching maths for ten years. (并将延续下去)

JJ 但是,有少数动词(work,live,teach,study等)的现在完成时和现在完成进行时所表示的意思是差不多的。

ZZ2 区别B

现在完成进行时可以表示动作的重复;现在完成时一般不表示重复性,但同always, often等连用时有时也表示重复的动作,见上文。例如:

Have you been meeting him recently?你最近常同他见面吗?
Have you met him recently?你最近见到他吗?

ZZ3 区别C

现在完成进行时有时含有感情色彩;现在完成时一般表示平铺直叙,但有时也带有感情色彩,见上文。例如:

What have you been doing?你一直在干什么来着?(惊异)
What have you done?你干了什么?(仅是一个问题,让对方回答,也可表示惊异)

I have been wanting to hear from you for long. 我很长时间以来就盼望着你的信。(亲切,礼貌)
I have wanted to hear from you. 我一直盼望着你的信。

亨利工作得有条不紊。
Henry has been doing his work regularly. (表扬)
Henry has done his work regularly.

谁吃了我的橘子?
Who's been eating my oranges?(不满,已吃光)
Who's eaten my oranges?(未吃光)

我等你已有两个小时了。
I have been waiting for you for two hours. (口语化,可能不耐烦)
I have waited for you for two hours. (说明一个事实)

ZZ4 区别D

在否定结构中,现在完成进行时否定时间状语,而现在完成时则否定谓语动词。例如:

She hasn't been speaking since nine o'clock. 她不是从9点钟开始讲话的。(=She has been speaking not since nine but since half past nine.)
She hasn't spoken since nine o'clock. 从9点起她一言未发。

ZZ5 区别E

love, know等状态动词通常用于现在完成时,不用于现在完成进行时。例如:

He has loved Helen since he was in middle school. 他自中学时代就爱上了海伦。(不说He has been loving ...)

They have known each other for ten years. 他们相识已经10年了。(不说They have been knowing ...)