The following are alternatives to DJ mappings that go well with hlsearch:
go to the next non-empty line
nnoremap <key> :<C-u>call search('^.\+')<CR>
go to previous non-empty line
nnoremap <otherkey> :<C-u>call search('^.\+', 'b')<CR>
expand visual selection to the next non-empty line
xnoremap <key> :<C-u>k`\|call search('^.\+')\|normal! <C-r>=visualmode()<CR>``o<CR>
expand visual selection to previous nonempty row
xnoremap <otherkey> :<C-u>k`\|call search('^.\+', 'b')\|normal! <C-r>=visualmode()<CR>``o<CR>
act on the next non-empty line
omap <key> :<C-u>normal! v<key><CR>
omap <otherkey> :<C-u>normal! v<otherkey><CR>
...
hlsearch, /anything . , , .
:help search(), hlsearch , , .
<C-u> .
:
- " "
:help :k, - ,
:help :normal,:help i_ctrl-r, :help "= :help visualmode(),- " "
:help '', - , ,
:help v_o.
, , .