[vim keymap] Make search highlighting respect ^ (start of line)

- Respect `^` expression in search
- Not match the empty string, which was causing an infinite loop problem
- Fix a few minor scrolling bugs in incremental search