Esse comportamento é controlado pela opção 'virtualedit'. Execute
:set ve?
para ver o que está definido atualmente. Provavelmente será "tudo". Se for esse o caso, basta executar
:set ve=
para redefini-lo. Se o seu Vim se comportar assim o tempo todo, você pode executar
:verbose set ve?
para ver onde foi definido pela última vez e corrigir o problema. Veja também
:help 've'