Role naturalmente além do final da última linha no vim

2

Sou um pouco novato em vim, mas estou com dificuldades em encontrar recursos para me ajudar com esse problema.

Quando eu movo meu cursor para o final do meu arquivo, eu quero continuar passando a linha final, de preferência até a última linha estar no topo da minha janela, mas indefinidamente ficaria bem também. Minha solução atual consiste em colocar set scrolloff=20 no meu ~/.vimrc e depois fazer G + zz para chegar ao fim. Mas se eu rolar para cima e para baixo, estou preso com a última linha rebocada novamente.

Eu entendo que, como não há novas linhas após o arquivo, ele não tem nada para se deslocar, mas mesmo assim é irritante não poder editar meu arquivo com a linha de fundo no meio da minha janela.

Então, em última análise, quero que, quando eu estiver na linha de baixo, eu possa segurar j e ele vai rolar para baixo. Existe uma maneira de fazer isso?

    
por Daniel Porteous 20.12.2016 / 10:56

2 respostas

2

Eu não acho que existe uma opção embutida para este comportamento, mas usando alguns atalhos de teclado na sua configuração você pode manter a linha com o cursor no meio permanentemente (exceto para as linhas superiores do arquivo):

set scrolloff=99999

nnoremap <C-U> 11kzz
nnoremap <C-D> 11jzz
nnoremap j jzz
nnoremap k kzz
nnoremap # #zz
nnoremap * *zz
nnoremap n nzz
nnoremap N Nzz
nnoremap gg ggzz
nnoremap G Gzz
nnoremap gj gjzz
nnoremap gk gkzz

Isso mapeia movimentos comuns para executar zz após e centralizar a tela na linha atual. Note que isto pode levar a cintilação em terminais lentos (por exemplo, sobre ssh), já que a posição da tela realmente salta de volta antes de centralizar novamente.

    
por 20.12.2016 / 11:04
0

Eu encontrei este script link que de fato funciona melhor que a resposta anterior. Desde inserir texto parece fazer o salto de rolagem.

Espelho aqui: link

    
por 30.03.2018 / 05:27

Tags