Como fazer uma pesquisa multilinha em menos?

17

Em less , você pode pesquisar usando / para um padrão que contém um retorno de carro e uma nova linha? Eu sei que seu padrão pode terminar com uma linha usando $ (de Como incluir novas linhas em uma pesquisa em menos? ), mas preciso que o padrão corresponda a texto que abrange várias linhas.

Eu tentei \n , mas isso só procura o caractere n .

    
por yonran 09.01.2013 / 22:16

3 respostas

5

Não é possível fazer a correspondência entre limites de linha, porque a função de pesquisa em less opera em uma única linha delimitada por nova linha de cada vez. Este é o caso, independentemente da implementação da regex do sistema (GNU, POSIX, PCRE, etc.).

Por favor, note que eu não consegui encontrar um repositório de fontes oficial para o desenvolvimento da linha principal less , mas para fins de revisão de código aqui, os links que seguem são do FreeBSD árvore de contribuição.

Veja search.c: search_range () para a implementação da operação de pesquisa. O loop nele chama line.c: forw_raw_line () para recuperar o arquivo próximo bloco de conteúdo delimitado por nova linha. Esse bloco é passado para match.c: match_pattern () onde o padrão de busca (expressão regular) é executado.

Para corresponder a várias linhas, você precisará usar uma ferramenta diferente. Uma opção é acessar seu editor e usar seus recursos de pesquisa, conforme sugerido por outras pessoas. Você pode chamar o editor pressionando v em less .

    
por 27.02.2015 / 20:41
2

less está usando a sintaxe ed regex e, infelizmente, não suporta correspondência de multilinha.

link

Eu esperava encontrar isso também, ou pelo menos descobrir se esse bit de sintaxe foi usado em less :

RE_DOT_NEWLINE If this bit is set, then the match-any-character operator matches a newline; if this bit isn’t set, then it doesn’t.

Portanto, posso usar o padrão .+ para corresponder às novas linhas. Mas não, isso não acontece.

    
por 26.02.2015 / 16:08
1

Não sei como fazer isso em less , mas você pode realizar o mesmo em vim .

link

/PATTERN1\_.\{-}PATTERN2

O átomo \_. encontra qualquer caractere, incluindo o fim da linha. O multi \{-} corresponde ao mínimo possível.

    
por 17.01.2014 / 02:28

Tags