vim linha wrap com recuo

19

O Vim / gvim irá envolver longas linhas como esta:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

Existe uma maneira de fazer com que o Vim envolva essas linhas desta forma:

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

Eu quero que a linha envolvida comece um pouco além do ponto onde essa linha começou. (Só para ficar claro, estou falando de wrap, não de textwidth.)

Eu quero que o recuo da linha seja considerado na embalagem dessa linha para que a estrutura do código não seja ocultada por linhas quebradas.

    
por retracile 19.11.2009 / 17:46

5 respostas

17

ATUALIZAÇÃO: Essa funcionalidade caiu no vim 7.4.338, embora você queira 7.4.354 ou posterior .

Portanto, aparentemente isso requer um remendo ao Vim . Existe um patch de Vaclav Smilauer de volta em 2007. I atualizou o patch para trabalhar com o Vim 7.2.148 do Fedora 11. Mas ele parece fazer o trabalho.

    
por 20.11.2009 / 18:17
13

No seu .vimrc:

set wrap               " soft-wrap lines

" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=----->   " prefix for soft-wrapped lines (no actual line break character)
"set linebreak          " soft-wrap lines only at certain characters (see :help breakat)

" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\  " line up soft-wrap prefix with the line numbers
"set cpoptions+=n        " start soft-wrap lines (and any prefix) in the line-number area

Ou simplesmente digite :set showbreak=-----> em qualquer sessão.

Para referência, minha trilha de pesquisa (Vim 6.2): :help 'wrap' - > :help 'linebreak' - > ( :help 'showbreak' - > :help 'cpoptions' , :help 'breakat' )

    
por 20.11.2009 / 07:35
0

Não é a resposta perfeita que você está procurando, mas eis o que eu faço para contornar a falta de recuo adequado do vim.

Primeiro, faça o download do guia de recuo do Nathanael Kane (opcional), pois é melhor indicar em que nível de indentação você está, até o ponto em que você pode definir as larguras das guias em apenas 2 espaços!

Em segundo lugar, mapeie uma combinação de teclas para alternar o quebra de linha. Eu tenho o meu definido como 'r' para 'wrap' ('w' é para salvar) assim como

:noremap <leader>r :set nowrap! <CR>

Então eu sempre tenho a quebra de palavras, já que é mais esteticamente agradável, e eu rapidamente alterno se preciso editar a linha.

    
por 23.02.2012 / 14:39
0

A "solução alternativa" que eu uso atualmente, é ter um recuo fixo mas grande no prefixo. Parece bom, contanto que esse recuo fixo seja maior que o recuo da linha quebrada, que é o caso na maior parte do tempo.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
    
por 25.02.2012 / 06:24
0

A solução para sua pergunta pode ser obtida definindo dois parâmetros em seu vimrc :

Para quebrar as linhas com o mesmo recuo: set breakindent

E um espaço para recuar linhas suaves: let &showbreak=' '

Funcionará assim:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |
    
por 23.05.2017 / 11:37

Tags