Suponha que você tenha digitado um documento longo no vim com quebra automática de linha, portanto, todas as linhas foram quebradas com, digamos, 79 caracteres. Você pode até ter aplicado a formatação ao documento inteiro para quebrar todas as linhas nesse comprimento.
Os parágrafos são demarcados no seu documento por linhas em branco.
Agora você decide que não deseja quebras de linha em parágrafos.
Como você pode remover todas as quebras de linha nos parágrafos sem eliminar totalmente os limites dos parágrafos?
Eu fiz esse hack rápido e idiota, mas estou procurando o caminho certo.
:%s/^\s*$/@@@@@ - replace blank lines with @@@@@
ggVGgJ - join all lines in the file
:%s/@@@@@/\r\r/g - replace @@@@@ with line breaks
vim
newlines
carriage-return
dggoldst
fonte
fonte
Respostas:
Eu acho que isso faz o que você deseja: verifique se há uma linha vazia no final do arquivo e, em seguida, junte todos os parágrafos (terminados por uma linha vazia).
Explicação: primeiro vá para o final do arquivo e acrescente uma linha vazia em branco
:a
(talvez haja uma maneira mais elegante de fazer isso; interativamente, você pode substituir as três primeiras linhas poro<ESC>
). Em seguida, para cada linha que não estiver em branco que ainda não foi considerada (:g/^./
), aplique ojoin
comando ao intervalo que começa na linha selecionada (.
) e termina uma linha antes da próxima linha vazia (/^$/-1
).Opcionalmente,
:g/^$/d
se você não deseja que nenhuma linha em branco permaneça (você pode retirar a-1
).fonte
:g
, que aplica um comando a todas as linhas correspondentes; veja:help :g
e talvez este tópico sobre como:g
se comporta ao excluir quebras de linha .:$pu _
no final, coloque o registro do buraco negro, o que resulta em uma linha em branco no final.Isso deve servir:
tw
é definido como um valor pelo menos tão grande quanto o número de caracteres no parágrafo mais longo.gg
move o cursor para a primeira linha;gq
é o comando para reformatar;G
move o cursor para a última linha, dizendogq
para reformatar do local atual do cursor para a última linha.fonte
Coloque o cursor dentro do parágrafo desejado
Tipo:
vipJ
(
vip
destaca o parágrafo atual,J
junta todas as linhas)fonte
Pode não ser a maneira mais limpa de fazer isso, mas eis o que eu usaria:
( Funciona no VIM 7.2. )
Dependendo exatamente de como os parágrafos foram divididos quando foram originalmente formatados, convém substituir o
gJ
comando (junção sem espaços) peloJ
comando (junção com espaços).A
999
contagem arbitrária precisa apenas ter pelo menos o número de parágrafos no arquivo - você pode selecionar um número maior se desejar e perder nada além de ciclos do processador. Assumindo uma e apenas uma linha em branco entre parágrafos, você pode obter uma contagem de parágrafos mais precisa usando:fonte