Como posso dividir um parágrafo em sentenças com o Vim?

3

Ao quebrar frases, quero dizer que cada nova sentença deve começar com uma nova linha.

Como repetir )i<CR><Esc> para o final do parágrafo } ? ( <CR> = Enter )

Se eu fizer uma macro )i<CR><Esc> como "q", posso executá-la até o final do parágrafo?

    
por kirill_igum 26.04.2011 / 02:04

3 respostas

2

Você pode pesquisar e substituir. Eu acabei de escrever isso. Funciona, mas você provavelmente poderia fazer melhor.

:%s/\v[ ]*([^\.]*\.)/\r/g
    
por 26.04.2011 / 02:12
2
vap:s/\. /.^M/g
  • vap seleciona seu parágrafo atual
  • :s/\. /.^M/g substitui todos os períodos seguidos por um espaço com um período seguido por uma nova linha. (Observe que, para obter essa nova linha literal ( ^M ) na expressão de substituição, você terá que digitar <CTRL-V><CR> .)
por 02.05.2011 / 05:44
0

Minha solução, inicie no modo normal e digite:

vip:'<,'>s/\n/ /|'<,'>s/\([.?!]\)\s/\r/g

Observe que o primeiro '<,' > será inserido automaticamente na linha de comando quando você pressionar a tecla ":" depois de digitar " vip " no modo normal.

O primeiro substituto une o parágrafo em uma linha, depois o "|" caractere delimita um segundo comando: - dentro da mesma linha de comando, e desta vez o " '<,'> " deve ser digitado manualmente. O segundo comando substituto substitui um período, ponto de interrogação ou ponto de exclamação seguido por um espaço com o símbolo correspondente e uma nova linha.

Isso não detecta casos em que uma frase termina com um período / excalmação / pergunta e um caractere de aspas etc., mas o padrão pode ser estendido para isso.

    
por 21.05.2011 / 23:34

Tags