I have mapped my arrows keys to move in a visual-line mode, leaving the hjkl keys for normal, logic line movement:  Visual movement with the arrows and End-Home nnoremap <Down> gjnnoremap <Up> gkvnoremap <Down> gjvnoremap <Up> gkinoremap <Down> <C-o>gjinoremap <Up> <C-o>gkinoremap <Home> <C-o>g<Home>inoremap <End>  <C-o>g<End>This works, but for a minor problem. I have a bit of code in my status line to change color between input mode and normal mode, like this: if version >= 700  highlight statusLine cterm=bold ctermfg=black ctermbg=red  au InsertLeave * highlight StatusLine cterm=bold ctermfg=black ctermbg=red gui=bold guifg=black guibg=red  au InsertEnter * highlight StatusLine cterm=bold ctermfg=black ctermbg=green   gui=bold guifg=black guibg=greenendif...and I noticed now (on a machine slower than the one I have at home) that every time I press one of the arrows, the temporary mode switch of <ctrl>o (at least, I think) make the status line flash rapidly red then green again. It is possible to redefine the keys to avoid the temporary jump to normal mode? 
Remap Up and Down arrows to gj-gk in vim input mode without using ?
vim;vimrc
I have two ideas, but both are quite complex:Use :inoremap <expr> and perform the cursor repositioning with :call cursor() yourself. The downside is that you have to do the calculation which wrapped column is directly over / under the cursor.Use :inoremap <expr> to wrap the <C-o>gj command in :set eventignore+=InsertLeave,InsertEnter before and option restore afterwards, like this:function! IgnoreOn( motion )    set eventignore+=InsertLeave,InsertEnter    return \<C-o> . a:motionendfunctionfunction! IgnoreOff()    set eventignore-=InsertLeave,InsertEnter    return \<Left>\<Right> |  Workaround for missing screen update.endfunctioninoremap <expr> <SID>IgnoreOff IgnoreOff()inoremap <expr> <SID>IgnoredDown IgnoreOn('gj')inoremap <script> <Down> <SID>IgnoredDown<SID>IgnoreOff