Coloque parágrafos com tags p no vim

4

Eu tentei criar um mapeamento para incluir os parágrafos visualmente selecionados em

tags:

vnoremap <silent> _p <Esc>'>a</p><Esc>'<i<p><Esc>:'<,'>s/\n\{2,}/<\/p>\r\r<p>/g<CR>

Infelizmente, esse mapeamento sempre adiciona </p>\r\r<p> indesejado no final da seleção (ou seja, atrás do </p> adicionado atrás do último caractere na etapa 1).

A seleção não termina com um double linebreak, então o padrão não deve coincidir. O que estou fazendo errado?

Da resposta

Obrigado, Romain - Eu tenho o plugin surround instalado, mas não é útil quando o bloco selecionado contém vários parágrafos. O mapeamento acima é usado para este caso, não para incluir um único parágrafo.

Meu mapeamento primeiro adiciona < / p > até o final, então < p > para o início da seleção, deve substituir cada ocorrência de duas ou mais quebra de linha pela combinação apropriada de tag de fechamento e abertura.

Eu ainda não entendi porque o padrão de substituição é aplicado ao final da seleção, que nunca consiste em um quebra de linha duplo.

    
por janeden 21.09.2011 / 22:22

2 respostas

0

Depois de ler a documentação do \% V mais de perto, posso responder a pergunta:

To make sure the whole pattern is inside the Visual area put \%V at the start and end of the pattern

Então meu mapeamento precisava ser alterado para

vnoremap <silent> _p <Esc>'>a</p><Esc>'<i<p><Esc>:'<,'>s/\%V\n\{2,}\%V/<\/p>\r\r<p>/ge<CR>:nohl<CR>

Peço desculpas por pesquisas impróprias antes de postar minha pergunta.

    
por 26.09.2011 / 20:33
0

Não é realmente lamentável, já que é isso que você faz explicitamente com a parte :'<,'>s/\n\{2,}/<\/p>\r\r<p>/g<CR> .

O bloco visualmente selecionado está perfeitamente fechado em <p></p> logo antes do : .

Você conhece o plug-in surround ? Ele resolve isso e outros problemas lindamente. Este plugin é obrigatório ao editar HTML.

    
por 22.09.2011 / 07:41

Tags