I config vim to have a slightly different semantic for arrow keys vs hjkl. I leave hjkl as-is, and then make arrow keys move across visible screen lines. So if there is a long line that wraps, the down arrow moves down one visible line (so technically still within the long line), and j moves to the next actual line in the file. Handy.
map <up> gk
imap <up> <c-o>gk
map <down> gj
imap <down> <c-o>gj