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.

user001
fonte
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}

thebodzio
fonte
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.

jpjacobs
fonte
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