To switch back to normal mode automatically after inaction
From Vim Tips Wiki
Looking for a way to exit insert mode automatically when you haven't typed anything for a few seconds?
" automatically leave insert mode after 'updatetime' milliseconds of inaction au CursorHoldI * stopinsert
If you find that this event fires too quickly, you can adjust 'updatetime' to suit your needs, but you might want to consider doing so only when you enter insert mode:
" set 'updatetime' to 15 seconds when in insert mode au InsertEnter * let updaterestore=&updatetime | set updatetime=15000 au InsertLeave * let &updatetime=updaterestore
This is the greatest vim tip of all time. Setting the timeout to a couple of seconds forces you to use vim very efficiently.