vi / vim abreviou os movimentos do buffer dentro da janela


11

Ao usar :set wrapno vi / vim, o conteúdo de uma linha quebrada inteira é colocado no buffer de exibição ao mover o cursor para uma nova linha, mesmo ao navegar por um arquivo pela linha de exibição (gj / gk), em oposição à linha real (j / k). Por exemplo, se uma linha estiver quebrada em 5 linhas da tela e estiver fora do buffer de exibição, o buffer aumentará em 5 linhas ao navegar nessa linha para forçar a linha inteira a caber na tela. Existe uma maneira de desativar esse comportamento? Observe que set display+=lastlinepermitirá a exibição de linhas parciais quando uma linha quebrada for forçada a sair da tela, navegando para fora da linha, mas isso não resolve os saltos do buffer que ocorrem ao navegar para uma linha que estava inicialmente fora do buffer.

Esclarecimento: Caso a descrição acima seja nebulosa, o essencial é que eu gostaria de poder rolar suavemente no vim com a quebra de linha ativada, de modo que as linhas sejam parcialmente exibidas na tela em vez de obrigatoriamente serem exibidas na sua totalidade.


1
Você pode confirmar que o que você quer dizer é: você deseja que parte da parte quebrada da linha fique fora da tela e possa rolar sem problemas? Vim exibe linhas completamente quando 'wrap'está em Receio
— Benoit

Precisamente. Entendo que não há como substituir esse comportamento de mostrar linhas quebradas na totalidade enquanto rolava? Obrigado.
— User11 de

1
Não que eu saiba. Espere pelas respostas, porém, ninguém sabe o que o Vim pode fazer.
— Benoit

1
concorde com @Benoit. Não é possível, tanto quanto eu sei.
— Fredrik Pihl

1
Atualmente, há uma discussão na lista de discussão vim_dev sobre este tópico. Parece que você não é o único com essa solicitação.
— Randy Morris

Respostas:


1

Não é uma resposta completa, mas talvez uma vantagem. Há scrollopção. A ajuda para essa opção diz, entre outras coisas:

{Vi é um pouco diferente: 'scroll' fornece o número de linhas da tela em vez de linhas de arquivo, faz a diferença quando as linhas são quebradas}


Obrigado, isso é útil. As combinações de teclas <Ctrl-E> (para baixo) e <Ctrl-Y> (para cima) fornecem o comportamento básico que eu quero. Se houver uma maneira de detectar se o cursor está na linha superior ou inferior da janela, uma solução temporária envolveria o mapeamento condicional das teclas de seta para cima e para baixo para <Ctrl-Y> gk e <Ctrl-E> gj, respectivamente. Quando o cursor não está na linha superior ou inferior da janela, é necessário mapear para gk e gj (a instrução else na condicional). Existe uma maneira simples de detectar se o cursor está na linha superior ou inferior da janela atual?
— User001

0

no modo normal, você pode pular entre as partes exibidas de uma linha quebrada usando gke gj( g<up>ou g<down>). Esta página wiki do vim explica como alterar o comportamento permanentemente.


1
Certamente, e eu mapei esses comportamentos para as setas direcionais. No entanto, isso é diferente da exibição obrigatória da totalidade de uma linha quebrada ao navegar para essa linha. Esse comportamento é independente do uso de gj / gk ou j / k. Gostaria de poder navegar parcialmente para uma linha que está inicialmente fora do buffer (fora da tela) sem que toda a linha quebrada seja exibida.
— User11 de

OK, então eu entendi errado. Bem, acho que sua linha está quebrada ou não está. O que você quer é algo intermediário, mas acho que é simplesmente impossível.
— Jspjacobs
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.