Como realizar duas pesquisas ao mesmo tempo no Vim?


5

No Vim, muitas vezes me vejo realizando uma pesquisa imediatamente seguida por outra. Gostaria de saber se posso combinar as duas pesquisas em um comando.

Por exemplo, se eu quiser encontrar a primeira instância da foobarvariável em uma função denominada transmogrify, digite:

/def transmogrify
/foobar

Ou, se eu estiver em um arquivo de log e desejar procurar um erro que ocorreu após uma data específica:

/2012-07-26
/ERROR

Existe uma maneira melhor de fazer isso? E não, não estou procurando gravar uma macro.

Respostas:


8

Mais fácil pode ser, por exemplo

/def transmogrify/;/foobar

1

Você pode usar o |símbolo para executar uma operação OR ao pesquisar.

Tomando seu segundo exemplo, por exemplo:

/2012-07-26\|ERROR

Melhor ainda, se você configurou isso no seu vimrc:

" Make search expressions "very magic"
nnoremap / /\v
vnoremap / /\v

Então você não precisa escapar do |. Por exemplo:

/\v2012-07-26|ERROR

1
No meu cérebro, isso não funcionaria porque deveria parar quando encontrar o primeiro termo, porque isso torna toda a afirmação verdadeira, mas na vida real provavelmente funciona.
26412 Rob

@Rob está certo; isso não funcionou quando eu apenas testei. Obrigado, no entanto!
Arussell84

Isso meio que funciona. Ele vai te dar o que você quer, você terá que navegar por todo o foobarou errorembora. Não funciona por causa do que eu disse, mas porque combina os dois termos, e é para isso que |serve aqui.
26712 Rob

Sim, entendo o que você quer dizer. Eu entendi mal o que você estava pedindo.
Kenny
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.