Update keybindings to fix screen-tearing and moves

- Downwards line movements in visual mode didn't work before because they moved
  the selection onto itself
- There was screen-tearing with C-f and C-d at the bottom of files, so now I
  redraw the screen when that will happen
diff --git a/modules/neovim/binds/binds.vim b/modules/neovim/binds/binds.vim
index 35353a8..6dd3dfb 100644
--- a/modules/neovim/binds/binds.vim
+++ b/modules/neovim/binds/binds.vim
@@ -1,10 +1,10 @@
 set whichwrap=b,s,<,>,[,]
 set mouse=
 
-vmap <C-k> :m-2<CR>
-vmap <C-j> :m+1<CR>
-nmap <C-k> :m-2<CR>
-nmap <C-j> :m+1<CR>
+vnoremap <silent> <C-k> :m-2<CR>gv
+vnoremap <silent><expr> <C-j> ":m+" . (line("'>") - line("'<") + 1) . "\<CR>gv"
+nnoremap <silent> <C-k> :m-2<CR>
+nnoremap <silent> <C-j> :m+1<CR>
 
 vmap <F12> <Esc>
 imap <F12> <Esc>
@@ -67,3 +67,7 @@
 tnoremap <Esc><Esc> <C-\><C-n>
 
 let g:camelcasemotion_key = '<leader>m'
+
+nnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>:redraw!<CR>"
+nnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
+nnoremap <silent> <C-d> <C-d>:redraw!<CR>
diff --git a/modules/neovim/coc/keybinds.vim b/modules/neovim/coc/keybinds.vim
index d4b583c..0f31a9f 100644
--- a/modules/neovim/coc/keybinds.vim
+++ b/modules/neovim/coc/keybinds.vim
@@ -69,8 +69,6 @@
 
 noremap <C-CR> <CR>
 
-nnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
-nnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
 inoremap <nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<C-f>"
 inoremap <nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<C-b>"