「ggはファイルの先頭」←罠

gg
[count] 行目の最初の非空白文字に移動します(行指向)
カウントの前置がなければ最初の行に移動します。
'startofline' がセットされていなければ同じ桁位置に移動します。

Vim documentation: motion

つまり先頭行の先頭に空白文字があった場合、ggは最初の非空白文字に移動してしまい、本当のファイル先頭には移動しない。
本当のファイル先頭に移動したい場合は gg0 を使う。