Eu gostaria de listar as correspondências, quando atingir:
/example
para que eu veja onde todas as correspondências estão ao mesmo tempo.
" put in your ~/.vimrc file
" START search related configs and helps
"
" ignore case when searching
set ignorecase
" search as characters are entered, as you type in more characters, the search is refined
set incsearch
" highlight matches, in normal mode try typing * or even g* when cursor on string
set hlsearch
" yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline
" how-to search for a string recursively
" :grep! "\<doLogErrorMsg\>" . -r
"
" how-to search recursively , omit log and git files
" :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`
" :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'`
"
" how-to search for the "srch" from the current dir recursively in the shell
" vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`'
"
" how-to highlight the after the search the searchable string
" in normmal mode press g* when the cursor is on a matched string
" how-to jump between the search matches - open the quick fix window by
" :copen 22
" how-to to close the quick fix window
" :ccl
" F5 will find the next occurrence after vimgrep
map <F5> :cp!<CR>
" F6 will find the previous occurrence after vimgrep
map <F6> :cn!<CR>
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
" omit a dir from all searches to perform globally
set wildignore+=**/node_modules/**
" use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/
noremap / /\v
"
" STOP search related configs and helps
node_modules
? - - Como as expressões regulares de perl mudam o funcionamento padrão do Vim? - - O seguinte é como eu projetei minha pesquisa de arquivos .tex askubuntu.com/a/789769/25388 Seria bom aprender com você como melhorá-la. Não é tão intuitivo, então muitas vezes também me esqueci da lógica.Em sua forma mais longa:
Você pode omitir o padrão / regex e o Vim reutilizará o termo de pesquisa anterior.
Curiosidades: A ferramenta grep foi nomeada após esta sequência de comando.
fonte
:g//
- como p (rint) é a ação padrão, você também pode deixar isso de fora.:g/
é ainda mais curto!--context 9
?:%s/regular-expression//gn
It produzirá algo nesse sentido:X matches on Y lines
Você também pode fazer:
g/pattern/#
isso imprimirá o padrão que você deseja e o número da linha.
fonte
#
não é necessário. Ele mostra os números das linhas por padrãose você quiser olhar para esta lista e pular rapidamente entre as correspondências, considere usar
:vimgrep example %
ou
:grep example %
Isso irá preencher a "lista de erros" com todas as correspondências para que você possa
:copen
listá-las todas no buffer de correção rápida, pressione Enter em uma linha específica para pular para aquela correspondência ou use comandos como:cn
e:cp
para ir e voltar.para uma explicação completa, veja minha resposta a uma pergunta semelhante
fonte
E499: Empty file name for '%' or '#', only works with ":p:h"
em MacVim 8.1Acabei de aprender um novo: o
Location List
!Digite
:lvim foo %
para pesquisarfoo
no arquivo atual e entrar todos os jogos que contêmfoo
na lista de locais .Digite
:lopen
para abrir a lista de locais na janela de correção rápida, que é totalmente navegável como de costume.Use
:lnext
/:lprevious
para através da lista (use mapeamentos tpope / intactos para a melhor experiência)fonte
Outra possibilidade é usar os comandos de pesquisa de arquivo de inclusão.
Isso listará todas as ocorrências da palavra sob o cursor. No entanto, pode ser mais do que você precisa, porque também pesquisará todos os arquivos incluídos no arquivo atual.
Mas o bom desse comando é que a exibição do resultado da pesquisa também mostra uma contagem do número de correspondências, além do número da linha de cada correspondência.
para ver muitas variantes.
Uma nota sobre
Isso pode ser reduzido ainda mais para
porque, como outros disseram, p (rint) é a ação padrão.
fonte
[I
com contexto, como no grep--context 9
?você pode obter uma bela
quickfix
janela com as correspondências do seu padrão de pesquisa atualmuito útil se você já criou um padrão de pesquisa complexo usando apenas
/pattern
Editar : acabei de descobrir que isso também funciona para todos os buffers abertos
fonte
Usar
:set hlsearch
irá destacar todas as correspondências em amarelo, permitindo que você verifique o arquivo facilmente em busca de correspondências. No entanto, pode não ser o que você deseja, após pesquisar: g // p fornecerá as correspondências listadasfonte
:nohl
para limpar os destaques quando você não precisar mais deles.Para elaborar sobre isso ... em vez de
você também pode escrever diretamente
ou, como p (rint) é a ação padrão para o comando: g (lobal), isso pode ser encurtado para
E em vez de p (rint), outras ações são possíveis, por exemplo, d (elete). Veja: ajuda: global
fonte
Em caso afirmativo
:set number
, o comando acima também exibe os números das linhas.Se você não tem
:set number
, entãoexibirá os números das linhas.
fonte
Eu escrevi um pedaço de código para isso. Na verdade, evita problemas em
vimgrep
. Funciona mesmo com arquivos sem nome. E é mais fácil de usar.Quando você chama com um padrão, ele abre as janelas de localização com todas as correspondências.
Isso poderia ser um comando
Então, tudo que você precisa fazer é digitar
:Mat pattern
Eu também uso o seguinte mapeamento para obter as correspondências da seleção visual atual.
fonte
Ctrl-f para listar todos os resultados da pesquisa:
fonte