
Em less
, você pode pesquisar usando /um padrão que contenha retorno de carro e nova linha? Eu sei que seu padrão pode terminar com uma linha usando $
(deComo incluo novas linhas em uma pesquisa em menos?), mas preciso que o padrão corresponda ao texto que abrange várias linhas.
Eu tentei \n
, mas isso só procura pelo n
personagem.
Responder1
Não é possível fazer a correspondência entre limites de linha, porque a função de pesquisa less
opera em uma única linha delimitada por nova linha por vez. Este é o caso independentemente da implementação da regex do sistema (GNU, POSIX, PCRE, etc.).
Observe que não consegui encontrar um repositório fonte oficial para o desenvolvimento principal do less
, mas para fins de revisão de código aqui, os links a seguir são da árvore de contribuições do FreeBSD.
Versearch.c:intervalo_de_pesquisa()para a implementação da operação de busca. O loop nele chamalinha.c:forw_raw_line()para recuperar o próximo bloco de conteúdo delimitado por nova linha. Esse bloco é passado paramatch.c:match_pattern()onde o padrão de pesquisa (expressão regular) é executado.
Para combinar várias linhas, você precisará usar uma ferramenta diferente. Uma opção é acessar seu editor e usar seus recursos de pesquisa conforme sugerido por outros. Você pode invocar o editor v
pressionando less
.
Responder2
Não tenho certeza de como fazer isso em less
, mas você pode fazer o mesmo em vim
.
http://vim.wikia.com/wiki/Search_across_multiple_lines
/PATTERN1\\_.\\{-}PATTERN2
O átomo \\_.
encontra qualquer caractere, incluindo fim de linha. O multi \\{-}
corresponde ao mínimo possível.
Responder3
less
está usando ed
sintaxe regex e, infelizmente, não suporta correspondência multilinha.
Eu esperava descobrir isso também, ou pelo menos descobrir se esse bit de sintaxe foi usado em less
:
RE_DOT_NEWLINE Se este bit estiver definido, o operador match-any-character corresponde a uma nova linha; se este bit não estiver definido, então isso não acontece.
Portanto, posso usar .+
o padrão para corresponder às novas linhas. Mas não, isso não acontece.