Grandparent was correct. Vim's basic completion is "similar words in the current file" (plus some other things), but omnicomplete is an arbitrary algorithm that can get pretty fancy. For example, in Ruby, omnicomplete on 3.14.tr will include truncate, while omnicomplete on [[1, 2]].tr will include transpose.
omnicompletion, by default, completes against words in any file currently open in any buffer. But it's also now pretty programmable, though I don't I currently use any of the languages that have good support built out for them.
I disagree on "Installing new software can be incredibly tedious and error-prone" with centralised package management, I much prefer installing something on linux than in windows, all it takes is "pacman -S" whatever, or alias that to something shorter, it also means searching for software is easy. In windows I have to go and search for it on the net etc.
Try cycling, I find I think better on hills vs. the flat. They usually have more interested scenery and hence what I see usually triggers something in my mind; one of the reasons I like trail running.
Thanks for posting this, I'd never used git before, neither looked into VCS (I'm just beginning to learn to program) and this provided a very decent understanding of the concept and how to use it!