Quando estou editando um documento LaTeX no vim, muitas vezes desejo pesquisar uma frase. Como eu tenho a configuração do LaTeX para quebrar as linhas, às vezes metade da frase fica em uma linha, enquanto a outra metade está na próxima. Nesse caso, a pesquisa não encontra o que estou procurando. Então por exemplo
blah blah blah hello
world blah blah blah
ao pesquisar usando /hello world
, não encontro o que estou procurando. Existe uma maneira rápida e fácil de modificar essa pesquisa para chegar onde eu quero estar? Ou melhor ainda, uma maneira de dizer ao vim para combinar com qualquer espaço em branco (espaço, tabulação, nova linha) com um espaço na cadeia de pesquisa?
hello\_s\+world
se houver mais de um caractere de espaço em branco entre eles, é claro.Esse problema foi solucionado em http://vim.wikia.com/wiki/Search_across_multiple_lines . Está incluída uma função que pode fazer o que eu preciso.
Em seguida, você pode fazer uma pesquisa em várias linhas usando
:S hello world
e ela será convertidahello\s\+world
e pesquisada. Outro recurso interessante é que isso também adicionará essa nova pesquisa ao histórico de pesquisas. Isso permite que você volte e modifique a pesquisa usando,q/
se necessário. Também pode ser usado para fazer a substituição:%s//new thing/g
. A desvantagem disso é que ele não será usadoincsearch
se você o tiver ativado.fonte
O jeito que eu sei não é difícil, mas é um pouco tedioso. Substitua todos os espaços da sua consulta de pesquisa pelo seguinte:
(Observe o espaço após o
[
.) Essa é a sintaxe da correspondência de expressão regular. Dividido, significa:[...]
significa corresponder a qualquer um da lista de caracteres entre colchetes.\t
é tab\n
é nova linha...\+
significa corresponder a um ou mais dos anteriores.Para mais informações sobre expressões regulares, você pode perguntar ao vim:
fonte
Eu pessoalmente usaria em
[ \t\n]*
vez de espaços. Isso corresponderá a zero ou mais de '', guia e nova linha. Dessa forma, se uma instância do seu padrão de pesquisa abranger uma quebra de linha, mas outra não, ambas serão correspondidas.fonte