search - pegar - vi numero de linea
¿Cómo puedes enumerar los partidos de la búsqueda de Vim? (11)
Me gustaría enumerar las coincidencias, cuando presiono:
/example
para que vea dónde están todas las coincidencias a la vez.
Acabo de aprender uno nuevo: ¡la Location List
!
Escriba :lvim foo %
para buscar foo
en el archivo actual e ingrese todas las coincidencias que contengan foo
en la lista de ubicaciones .
Escriba :lopen
para abrir la lista de ubicaciones en la ventana de revisión, que es completamente navegable como de costumbre.
Use :lnext
/ :lprevious
to to a través de la lista (use tpope / mapeos no alterados para la mejor experiencia)
Ctrl-f para listar todos los resultados de búsqueda:
nmap <C-f> :vimgrep /<C-r>//g %<CR> /| !:copen <Enter>
Otra posibilidad es usar los comandos de búsqueda de archivos include.
[I
Esto listará todas las ocurrencias de la palabra debajo del cursor. 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 búsqueda también muestra un recuento del número de coincidencias, además del número de línea de cada coincidencia.
:help include-search
para ver muchas variantes
Una nota sobre
:g//p
Esto se puede reducir aún más
:g//
porque, como han dicho otros, p (rint) es la acción predeterminada.
Para elaborar sobre esto ... en lugar de
/example
:g//p
también puedes escribir directamente
:g/example/p
o, como p (rint) es la acción predeterminada para el comando: g (lobal), esto se puede acortar a
:g/example
Y en lugar de p (rint), otras acciones son posibles, por ej. D (elete). Ver: ayuda: global
También puedes hacer un:
g/pattern/#
que imprimirá el patrón que desee y el número de la línea.
Usando :set hlsearch
resaltará todas las coincidencias en amarillo permitiéndole escanear el archivo fácilmente para buscar coincidencias. Sin embargo, puede que eso no sea lo que quieres después de buscar: g // p te dará las coincidencias enumeradas
puede obtener una buena ventana de quickfix
con las coincidencias de su patrón de búsqueda actual
:vim // %
:copen
súper útil si previamente diseñó un patrón de búsqueda complejo usando solo /pattern
Editar : acaba de descubrir que esto también funciona para todos los búferes abiertos
:bufdo vimgrepadd // %
:copen
si quieres ver esta lista y saltar rápidamente entre los partidos, considera usar
:vimgrep example %
o
:grep example %
Esto completará la "lista de errores" con todas las coincidencias para que pueda usar :copen
para listarlas todas en el búfer de solución rápida, presione enter en una línea particular para saltar a esa coincidencia, o use comandos como :cn
y :cp
ir y venir
para una explicación completa, ver mi respuesta a una pregunta similar
" 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
:g//p
En su forma más larga:
:global/regular-expression/print
Puede omitir el patrón / expresión regular y Vim volverá a utilizar el término de búsqueda anterior.
Trivia: La herramienta grep recibió su nombre después de esta secuencia de comandos.
g/pattern
Si tiene :set number
, el comando anterior muestra los números de línea también.
Si no lo has hecho :set number
, luego
g/pattern/#
mostrará los números de línea.