Present perfect continuous in negative with period of time
Could you answer my question?
1) I haven't smoked for years.
2) I haven't been smoking for years.
In Raymond Murphy's book English Grammar in Use with Answers. A Self-Study Reference and Practice Book for Intermediate Learners of English (ex:11.1(9) The answer is No. 1 Why is
I haven't been smoking for years, not possible?
Could you please explain? Can I use the present perfect continuous negative with period of time: for 2 weeks, for years etc? And not with the verb to smoke but also with other verbs.
Solution 1:
The perfect progressive in the negative with a specified period of time is certainly grammatical and is used: "I haven't been running for the past 2 hours". The catch is that this usually requires some context. In this case you usually want to negate something that is being said or assumed: "I haven't been playing for the past 2 hours, I was doing my homework"
Lets simplify the 'for years' and look at the positive version: "I have been smoking during the last 30 days" - this implies that you started and never stopped (continuous action).
If we negate that it means that you have not been smoking for the past 30 days. While perfectly grammatical, this is ambiguous since it could be interpreted in at least 2 ways: "I have not been smoking during the last 30 days, but I have been smoking during the last 29 days" or "I have not been smoking during the last 30 days, I have been chewing gum instead" (i.e. "I stopped smoking 30 days ago and have not smoked at least until the time when the phrase is uttered")
This means that if you want to unambiguously say that you stopped smoking 1 month ago you say "I haven't smoked during the last month" (or "I haven't smoked for years")
As per WS2's answer there are also phrases like 'I haven't been swimming for years'. This is another use-case where the verb "to be" is replacing the verb "to go": "I haven't gone swimming for years" / "I haven't gone to swim for years"
Solution 2:
That form of perfect continuous tends to be reserved for expressions like 'I haven't been swimming for years'. You could also say 'I haven't swum for years', but that would be less usual, and mean something slightly different.
We don't 'go smoking' in the way we 'go swimming'. But we do 'go walking', and 'go fishing'. With those sorts of verbs you can use the perfect continuous negative example. 'I haven't been fishing for years'.