Me gustaría enumerar las coincidencias, cuando presiono:
/example
para ver dónde están todas las coincidencias a la vez.
" 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
Por qué ? - - ¿Cómo las expresiones regulares de perl cambian el funcionamiento predeterminado de Vim? - - Lo siguiente es cómo he diseñado mi búsqueda de archivos .tex askubuntu.com/a/789769/25388 Sería bueno aprender de usted cómo mejorarla. No es tan intuitivo, así que también me olvidé de la lógica a menudo.En su forma más larga:
Puede omitir el patrón / expresión regular y Vim reutilizará el término de búsqueda anterior.
Trivia: la herramienta grep recibió el nombre de esta secuencia de comandos.
fuente
:g//
- dado que p (rint) es la acción predeterminada, también puede omitirla.:g/
es aún más corto!--context 9
?:%s/regular-expression//gn
It producirá algo como esto:X matches on Y lines
También puedes hacer una:
g/pattern/#
que imprimirá el patrón que desea y el número de la línea.
fuente
#
no es necesario. Muestra los números de línea por defectosi desea ver esta lista y saltar rápidamente entre las coincidencias, considere usar
:vimgrep example %
o
:grep example %
Esto llenará la "lista de errores" con todas las coincidencias para que pueda usar
:copen
para listarlas todas en el búfer de corrección rápida, presione enter en una línea en particular para saltar a esa coincidencia, o use comandos como:cn
y:cp
para ir y venir.para una explicación detallada, vea mi respuesta a una pregunta similar
fuente
E499: Empty file name for '%' or '#', only works with ":p:h"
en MacVim 8.1Acabo de aprender uno nuevo: el
Location List
!Escriba
:lvim foo %
para buscarfoo
en el archivo actual e ingrese todas las coincidencias que contenganfoo
en la lista de ubicaciones .Escriba
:lopen
para abrir la lista de ubicaciones en la ventana de corrección rápida, que es totalmente navegable como de costumbre.Use
:lnext
/:lprevious
to para recorrer la lista (use tpope / mappings unimpaired para la mejor experiencia)fuente
Otra posibilidad es utilizar los comandos de búsqueda de archivos incluidos.
Esto mostrará una lista de todas las apariciones de la palabra debajo del cursor. Sin embargo, puede ser más de lo que necesita, porque también buscará cualquier archivo que esté incluido en el archivo actual.
Pero lo bueno de este comando es que la pantalla de resultados de la búsqueda también muestra un recuento del número de coincidencias, además del número de línea de cada coincidencia.
para ver muchas variantes.
Una nota sobre
Esto se puede reducir aún más a
porque, como han dicho otros, p (rint) es la acción predeterminada.
fuente
[I
con contexto, como en grep--context 9
?puede obtener una bonita
quickfix
ventana con las coincidencias de su patrón de búsqueda actualmuy útil si anteriormente creó un patrón de búsqueda complejo utilizando solo
/pattern
Editar : acabo de descubrir que esto también funciona para todos los búferes abiertos
fuente
El uso
:set hlsearch
resaltará todas las coincidencias en amarillo, lo que le permitirá escanear el archivo fácilmente en busca de coincidencias. Sin embargo, puede que eso no sea lo que desea, después de buscar,: g // p le dará las coincidencias enumeradasfuente
:nohl
para borrar los aspectos más destacados cuando ya no los necesite.Para desarrollar esto ... en lugar de
también puedes escribir directamente
o, como p (rint) es la acción predeterminada para el comando: g (lobal), esto se puede abreviar a
Y en lugar de p (rint), son posibles otras acciones, por ejemplo, d (elete). Ver: ayuda: global
fuente
Si es así
:set number
, el comando anterior también muestra números de línea.Si no lo ha hecho
:set number
, entoncesmostrará los números de línea.
fuente
He escrito un fragmento de código para esto. De hecho, evita los problemas en
vimgrep
. Funciona incluso con archivos sin nombre. Y es más fácil de usar.Cuando lo llama con un patrón, abre las ventanas de ubicación con todas las coincidencias.
Esto podría ser un comando
Así que todo lo que necesitas hacer es escribir
:Mat pattern
También utilizo el siguiente mapeo para obtener las coincidencias de la selección visual actual.
fuente
Ctrl-f para listar todos los resultados de la búsqueda:
fuente