Como colocar a linha atual na parte superior / central / inferior da tela no vim?

118

Qualquer truque de navegação mais rápido para colocar a linha na qual o cursor está no momento

  • topo da tela?
  • centro da tela?
  • parte inferior da tela?
mtk
fonte

Respostas:

153

z<CR>ou zt coloca a linha atual no topo da tela ( <CR>== Enter)

z.ou zz coloca a linha atual no centro da tela

z-ou zb coloca a linha atual na parte inferior da tela

( z<CR>, z., E z-coloca o cursor na primeira coluna não em branco. zt, zz, E zbdeixa o cursor na coluna corrente)

Mais informações sobre rolagem em http://vimdoc.sourceforge.net/htmldoc/scroll.html ou
no tipo vim:help scroll-cursor

mtk
fonte
14
Você também pode usar em zzvez dez.
evilsoup
2
Eu não tinha ouvido falar z.antes. Eu acho que prefiro ter duas teclas diferentes para pressionar do que pressionar duas vezes. Você pode pressionar simultaneamente as teclas paralelas, desde que elas cheguem na ordem certa e o tempo entre as ocorrências possa ser bastante curto, tornando essa uma opção muito rápida. As teclas ze .são espelhos uma da outra (pelo menos no teclado en-GB). Você poderia razoavelmente preferir um toque duplo no z, e é ótimo ter as duas opções.
de Drew Noakes
15 anos de vim e eu não conhecia essa coisinha prática! Voto a favor!
PnotNP
14

Saída do :help scroll-cursor@mtk menciona. Observe que há uma diferença entre zze z..


Rolagem relativa ao cursor (scroll-cursor)

Os seguintes comandos reposicionam a janela de edição (a parte do buffer que você vê) enquanto mantém o cursor na mesma linha:

z<CR>                   Redraw, line [count] at top of window (default
                        cursor line).  Put cursor at first non-blank in the
                        line.

zt                      Like "z<CR>", but leave the cursor in the same
                        column.  {not in Vi}

z{height}<CR>           Redraw, make window {height} lines tall.  This is
                        useful to make the number of lines small when screen
                        updating is very slow.  Cannot make the height more
                        than the physical screen height.

z.                      Redraw, line [count] at center of window (default
                        cursor line).  Put cursor at first non-blank in the
                        line.

zz                      Like "z.", but leave the cursor in the same column.
                        Careful: If caps-lock is on, this command becomes
                        "ZZ": write buffer and exit!  {not in Vi}

z-                      Redraw, line [count] at bottom of window (default
                        cursor line).  Put cursor at first non-blank in the
                        line.

zb                      Like "z-", but leave the cursor in the same column.
                        {not in Vi}

Rolagem horizontal (rolagem horizontal)

Para os quatro comandos a seguir, o cursor segue a tela. Se o caractere em que o cursor está ativado for movido para fora da tela, o cursor será movido para o caractere mais próximo que estiver na tela. O valor de 'sidescroll' não é usado.

z<Right>    or
zl                      Move the view on the text [count] characters to the
                        right, thus scroll the text [count] characters to the
                        left.  This only works when 'wrap' is off.  {not in
                        Vi}

z<Left>      or
zh                      Move the view on the text [count] characters to the
                        left, thus scroll the text [count] characters to the
                        right.  This only works when 'wrap' is off.  {not in
                        Vi}

zL                      Move the view on the text half a screenwidth to the
                        right, thus scroll the text half a screenwidth to the
                        left.  This only works when 'wrap' is off.  {not in
                        Vi}

zH                      Move the view on the text half a screenwidth to the
                        left, thus scroll the text half a screenwidth to the
                        right.  This only works when 'wrap' is off.  {not in
                        Vi}

Para os dois comandos a seguir, o cursor não é movido no texto, apenas o texto rola na tela.

zs                      Scroll the text horizontally to position the cursor
                        at the start (left side) of the screen.  This only
                        works when 'wrap' is off.  {not in Vi}

ze                      Scroll the text horizontally to position the cursor
                        at the end (right side) of the screen.  This only
                        works when 'wrap' is off.  {not in Vi}
Drew Noakes
fonte