Vim desfazendo formatação de largura de texto

3

Eu escrevi um documento no vim com textwidth = 80. Agora gostaria de colar este documento no libreoffice para formatação. O problema é as quebras de linha. No libreoffice, as linhas são muito curtas devido às novas linhas inseridas pelo vim após 80 caracteres.

Eu separo parágrafos usando dois caracteres de nova linha (ou seja, atingindo retorno duas vezes). Existe alguma maneira de remover todos os caracteres \ n \ n, mantendo os \ n \ n caracteres?

    
por Moyamo 03.02.2013 / 15:30

3 respostas

0

Algo parecido com isto

:%s/\(\S\)\n/
:%s/\n/&&

deve funcionar. Bem, isso acontece aqui.

A primeira substituição corresponde a um "caractere que não seja espaço em branco" (poderia ser mais específico) seguido por uma nova linha, capturando esse "caractere que não é espaço em branco" para uso na substituição ( ). Praticamente, transforma todos os "parágrafos" em uma única linha.

O segundo substitui cada caractere de nova linha por dois caracteres de nova linha. & é usado na substituição para significar "o texto correspondente" então, aqui && significa "dois caracteres de nova linha". Pode ser escrito :%s/\n/\r\r , mas && é menor.

    
por 03.02.2013 / 16:06
3

Você pode usar VipJ em cada parágrafo:

  • V : inicia a seleção lineal.
  • ip : selecione o parágrafo inteiro.
  • J : une as linhas.

Como você separa cada parágrafo com uma nova linha dupla, podemos gravar uma macro para fazer isso automaticamente:

qqVipJ2jq

Para juntar os parágrafos N juntos, basta usar N @q agora.

    
por 16.02.2013 / 13:54
2

Existem várias maneiras de fazer isso no Vim, mas acho que a mais simples é esta:

:set tw=9999
gggqG

Isso move o cursor para a primeira linha do buffer ( gg ) e reformata ( gq ) todas as linhas de lá para a última linha ( G ). Veja

:help gq
    
por 03.02.2013 / 20:15