A pergunta 1 parece relativamente fácil (e minha resposta provavelmente é um pouco ingênua):
nnoremap } /^\s*$<CR>
nnoremap { ?^\s*$<CR>
Mas você deve encontrar outro atalho, eu acho.
Além disso, você já tem gg
para pular para a primeira linha do buffer e G
para pular para a última linha. Não é suficiente?
Eu não sei como responder à pergunta 2 de maneira simples. Você tentou objeto de recuo de vim ?