現在完了進行形を使いこなす上で絶対に避けて通れないのが、状態動詞と動作動詞の区別です。文脈上どれだけ「ずっと〜し続けている」と言いたくても、文法的に現在完了進行形が使えない動詞が存在します。
動詞は大きく以下の2種類に分類されます。
・動作動詞:自分の意志で「開始」や「中断」がすぐにできる動作(run, study, play, wait, rain など)
・状態動詞:自分の意志ですぐに変えられない状態や心理(know, like, have [所有], belong to, resemble など)
進行形(-ing)は「刻一刻と変化する動作」を表すため、もともと変化のない状態動詞は原則として進行形にできません。したがって、状態の継続を表す場合は必ず現在完了形(have+過去分詞)を用います。
・誤り:✕ I have been knowing him for five years.
・正解:◯ I have known him for five years.(彼とは5年来の知り合いです)
なお、live(住む)やwork(働く)といった動詞は、状態動詞と動作動詞の中間に位置します。そのため「I have lived here for 10 years.(10年間住んでいる=定住・永続的な感覚)」と「I have been living here for 10 years.(10年間ここに住み続けている=一時的・活動的なニュアンス)」の双方が成立し、話者の心理的距離によって使い分けられます。