Vim: Como você procura de forma eficiente por texto?

30

Sempre que você quiser procurar texto no vim, digite / e, em seguida, a string que está procurando.

No entanto, quando a string é longa, e você quer fazer isso várias vezes, existe uma maneira de fazer isso para que você não precise digitar / andthisreallylongstring more de uma vez?

    
por Dark Templar 11.10.2011 / 08:39

12 respostas

60

Pressione "n" depois de concluir uma pesquisa e, em seguida, ela repetirá a ação anterior (pesquisa).

    
por 11.10.2011 / 08:59
33

Se a string que você procura estiver sob o cursor, você pode digitar * para procurá-la, ou # para procurá-la de trás para frente.

    
por 11.10.2011 / 10:16
19

Como eu normalmente pesquiso é algo como:

  1. Prima '/'
  2. Insira o termo de pesquisa
  3. Pressione Enter
  4. Use 'n' e 'N' para navegar para frente e para trás na pesquisa.

O Vim mantém um histórico de suas pesquisas, portanto, se você precisar de pesquisas anteriores, pressione '/' e use as teclas UP e DOWN ou < Ctrl-P > < Ctrl-N > para navegar no histórico de pesquisas.

Você também pode usar '?' em vez de '/' para pesquisar para trás.

Eu também gosto de usar:

set ignorecase smartcase

Agora, será apenas uma pesquisa sensível a maiúsculas e minúsculas se você tiver caracteres maiúsculos na string de pesquisa.

    
por 11.10.2011 / 11:46
15

Duas dicas adicionais que podem tornar sua pesquisa mais eficiente são set hlsearch e set incsearch .

  • set hlsearch , bem, destaca seus resultados de pesquisa. Digite :noh para desativá-los quando não precisar mais deles.

  • set incsearch ativa a pesquisa incremental.

    Extraído de :help incsearch

    While typing a search command, show where the pattern, as it was typed so far, matches. The matched string is highlighted. If the pattern is invalid or not found, nothing is shown. The screen will be updated often, this is only useful on fast terminals.

    Sem incsearch , seus resultados serão exibidos somente depois de pressionar <CR> na sua palavra-chave de pesquisa.

    Exemplo:

    Você deseja pesquisar por wildignore

    Vocêdigita/wildeaprimeiracorrespondênciaédestacadaautomaticamente.

    Em seguida, digite i e passe para a próxima correspondência correta.

por 11.10.2011 / 17:58
13

Outra dica ainda não abordada: ao pressionar os caracteres q e, em seguida, / , você verá uma lista de termos de pesquisa anteriores. Você pode editá-las como qualquer outra linha em um documento e, em seguida, pressionar Enter para reutilizá-las para uma nova pesquisa.

    
por 11.10.2011 / 16:41
8

Depois de pressionar / para iniciar a pesquisa, você pode usar a seta para cima para percorrer seu histórico de pesquisa.

Você pode inserir uma expressão regular para evitar ter que digitar todo o termo de pesquisa: and.*longstring

    
por 11.10.2011 / 11:37
7

Acontecer / sem argumentos não funciona para você? Em todos os nossos sistemas, isso causa uma repetição de qualquer pesquisa feita por último.

    
por 11.10.2011 / 20:00
6

Há um ótimo padrão que você pode seguir para procura por texto extraído . Então você nem precisa digitar a palavra em si, se você tiver navegado para ela por outros meios que não uma pesquisa. Em resumo, se você estiver no primeiro caractere da palavra que deseja pesquisar:

v
e
y
/
Ctrl-r
0
Enter

(continue para a próxima correspondência com n ou N)

No entanto, * (ou # ) realiza praticamente a mesma coisa que todos esses comandos. A única diferença é que você pode ser flexível quanto da palavra que você especificar (em vez de e, no final da palavra, você pode selecionar o quanto quiser, por exemplo, 9l)

    
por 11.10.2011 / 13:51
1
  • /string - Pesquisar encaminhamento por string
  • ?string - Pesquisar de volta por string
  • n - Procura pela próxima instância da string
  • N - Procura por instância anterior de string
por 11.10.2011 / 21:03
1

Muito tempo ao programar, eu quero procurar por aVeryLongVariableNameInTheProgram .

No vim você pode muito facilmente arrancar o texto em um buffer / registrador e então procurá-lo:

  • Coloque o cursor no primeiro caractere da palavra
  • "Byw para extrair o texto aVeryLongVariableNameInTheProgram no buffer B (escolha o seu favorito, usei o B)
  • /^RB (barra, Ctrl-R, B) para colar o buffer B na linha de pesquisa

É claro que você também pode usar o fim de linha, etc., em vez de puxar uma única palavra - acontece de usar a sequência acima o tempo todo.

    
por 13.10.2011 / 19:38
1

Adicionalmente, você pode colar o conteúdo de qualquer registro no prompt de busca pressionando Ctrl + R e então o nome do registrador, por exemplo, / Ctrl + R 0 Digite .

    
por 11.10.2011 / 10:31
0

A string longa que você está digitando é um nome de variável? Ou uma longa string no seu texto? Em seguida, pressione * para pesquisar a palavra / string sob o cursor.

    
por 11.10.2011 / 19:11

Tags