Vim: Como você busca texto com eficiência?

30

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

No entanto, quando a string é longa e você deseja fazer isso várias vezes, existe uma maneira de fazê-lo para que você não precise digitar /andthisreallylongstringmais de uma vez?

Templário Sombrio
fonte
12
Eu recomendo que você leia brevemente uma folha de dicas ou dicas do Vim - você pode encontrar muitas outras maneiras de aproveitar ao máximo o vim.
RedGrittyBrick
Protip: existem editores de texto para Linux que não requerem semanas de estudo para serem utilizados.
BlueRaja - Danny Pflughoeft 11/11
4
@BlueRaja: não tenho certeza se este é um bom lugar para uma guerra de editores. Também para uma guerra de SO, pois também existem editores de texto agradáveis ​​e fáceis de usar para Windows ou Mac OS. Ter que estudar como ser eficiente com um editor o tornará provavelmente mais eficiente no final do que ficar com os recursos básicos.
Benoit

Respostas:

61

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

lamwaiman1988
fonte
12
Além disso, Nirá para o resultado anterior.
Jin
15
Além disso, bater a seta para cima depois de bater /irá recordar a última termo de busca
bastibe
6
Também q/mostrará uma janela editável com todos os termos de pesquisa recentes.
UncleZeiv 11/11
7
Além disso, pressionar /e Enter repetirá a pesquisa anterior. Bater ?e Enter repetirá a pesquisa anterior para trás.
Andy Lester
3
/Ctrl-Fé uma alternativa a q/isso, pode ser um mnemônico mais fácil (ctrl-f == find). Como q, ele também funciona no modo de comando.
Idbrii 12/10
34

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

Didier Trosset
fonte
19

Como eu costumo pesquisar é algo como;

  1. Pressione '/'
  2. Digite 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 procurar para trás.

Eu também gosto de usar:

set ignorecase smartcase

Agora, será apenas uma pesquisa com distinção entre maiúsculas e minúsculas se você tiver caracteres maiúsculos na sequência de pesquisa.

Valadas
fonte
15

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

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

  • set incsearch ativa a pesquisa incremental.

    Extraído de :help incsearch

    Ao digitar um comando de pesquisa, mostre onde o padrão, como foi digitado até agora, corresponde. A sequência correspondente é destacada. Se o padrão for inválido ou não encontrado, nada será mostrado. A tela será atualizada frequentemente, isso é útil apenas em terminais rápidos.

    Sem incsearch, seus resultados serão exibidos somente após pressionar <CR>a palavra-chave de pesquisa.

    Exemplo:

    Você deseja procurar wildignore

    insira a descrição da imagem aqui

    Você digita /wilde a primeira correspondência é destacada automaticamente.

    insira a descrição da imagem aqui

    Em seguida, digite ie prossegue para a próxima correspondência correta.

    insira a descrição da imagem aqui

Jin
fonte
13

Outra dica ainda não abordada: pressionar os caracteres qe /fornecerá uma lista dos termos de pesquisa anteriores. Você pode editá-los como qualquer outra linha de um documento e pressionar enter para reutilizá-los para uma nova pesquisa.

Marcin
fonte
3
Estava procurando por isso. Esta é uma nota importante e muito sobre o tópico.
Cincodenada 11/11
8

Depois de pressionar /para iniciar a pesquisa, você pode pressionar a seta para cima e rolar pelo seu histórico de pesquisas.

Você pode inserir uma expressão regular para evitar a digitação de todo o termo de pesquisa: and.*longstring

Graham Borland
fonte
7

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

Kyle Banerjee
fonte
6

Há um bom padrão que você pode seguir para procurar texto arrancado . Então você nem precisa digitar a palavra em si, se a tiver navegado 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 partida 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 em relação à quantidade de palavras que você especificar (em vez de e, até o final da palavra, você pode selecionar quantas vezes quiser, por exemplo, 9l)

Bento
fonte
1
  • /string - Pesquisar para frente a string
  • ?string - Pesquisar novamente por string
  • n - Procure a próxima instância da string
  • N - Procure a instância anterior da string
AbdulFattah Popoola
fonte
1

Muito tempo ao programar, quero pesquisar aVeryLongVariableNameInTheProgram.

No vim, você pode facilmente arrastar o texto para um buffer / registro e depois procurá-lo:

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

Claro que você também pode puxar para o final da linha, etc., em vez de puxar uma única palavra - por acaso uso a sequência acima o tempo todo.

Dan7119
fonte
1

Além disso, você pode colar o conteúdo de qualquer registro no prompt de pesquisa pressionando Ctrl+ Re, em seguida, o nome do registro, por exemplo, / Ctrl+ R0 Enter.

tdammers
fonte
Eu acho que você é uma palavra.
dotancohen
0

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

Andy Lester
fonte