In my opinion the real downside of using <count>j and <count>k to move isn't the counting part, it's the fact that <count>k isn't a jump. That means it doesn't go into the jump list.
``` " Does: " For wrapped lines, does gj/gk " For large jumps, adds a spot on the jump list function! tj#jump_direction(letter) let jump_count = v:count
if jump_count == 0
call execute(printf('normal! g%s', a:letter))
return
endif
if jump_count > 5
call execute("normal! m'")
endif
call execute(printf('normal! %d%s', jump_count, a:letter))
endfunction
```and map j and k to this