FWIW, my vim-qf plugin has a o
mapping that could be of help:
" in after/ftplugin/qf.vim
nmap <buffer> <Down> <Down>o
nmap <buffer> <Up> <Up>o
If you don't want to pull the whole thing just for this use case, the mapping in question is very simple:
nnoremap <silent> <buffer> o <CR><C-w>p
so you can integrate the RHS directly in your own mappings:
" in after/ftplugin/qf.vim
nnoremap <buffer> <Down> <Down><CR><C-w>p
nnoremap <buffer> <Up> <Up><CR><C-w>p

--- EDIT ---
To be perfectly clear, I mentioned my plugin for context but the proposed solution doesn't require that you install it.
All it requires is that you create a after/ftplugin/qf.vim
file in your personal runtime directory (~/.vim/
on Unix-like systems) and that you put the following lines in it:
nnoremap <buffer> <Down> <Down><CR><C-w>p
nnoremap <buffer> <Up> <Up><CR><C-w>p
You don't need my plugin at all for that.
Now… the <buffer>
in the mappings above is there to tell Vim to create those mappings only for the current buffer. Your vimrc
is sourced very early in the startup process, before any buffer is created so, when Vim executes those lines it does its best to honor your wish by creating the mappings for the first buffer only, which is generally useless.
The intent, here, is to have those mappings only in the quickfix window. Since the buffer displayed in that window has the qf
filetype, it means that we must create that mapping only for buffers with that filetype. The proper way to do it is to put those mappings in the relevant ftplugin, which will be sourced every time we load a quickfix list in the quickfix window.