search - buscar - Muestra el conteo de partidos en Vim
vim search and replace (8)
Alternativamente, desde lo que @Al sugiere, puede mapear la combinación de teclas para escribir la mayor parte de la línea y luego mover el cursor a la posición donde se inserta el patrón real:
: nmap, c ^ [:% s /// gn ^ [OD ^ [OD ^ [OD ^ [OD
Donde ''^ ['' es Ctrl + V, Esc y ''^ [OD'' es Ctrl + V, izquierda
Luego presionar '', c'' pasará al modo comando, ingrese el patrón y deje el cursor sobre el segundo ''/'', listo para insertar el patrón.
Hay una buena función en Google Chrome cuando haces una búsqueda. Te dice el número de coincidencias que hay para la palabra clave que estás buscando. Sin embargo, en Vim no veo esa característica. Algunas personas sugirieron usar %s/pattern//gn
o similar:
http://vim.wikia.com/wiki/Count_number_of_matches_of_a_pattern
No se puede contar el número de coincidencias en Vim
¡Pero eso es bastante largo realmente! Estoy buscando el conteo cuando presiono ''*'', ''%'', o hago cualquier búsqueda usando ''/'' y ''?''.
¿Alguna idea?
Aquí hay una solución barata ... Usé Buscar y reemplazar todo en Vim. Sin guiones sofisticados. Hice una búsqueda X y reemplazo todo con X. Al final, Vim informa "2134 sustituciones en 9892 líneas". X apareció 2134 veces. Uso: q! para salir del archivo sin guardarlo. Ningún daño hecho.
Este plugin hace justamente eso. https://github.com/osyo-manga/vim-anzu
Al buscar una palabra en vim, mostrará el conteo de palabras en la línea de estado. También tiene la opción de mostrar junto a la palabra buscada, es decir. this_is_my_sample_word (3/12) , o this_is_my_sample_word (7/12) . Esto básicamente dice: esta es la tercera o séptima ocurrencia de un total de 12 ocurrencias.
No sé de una manera directa de hacerlo, pero podría hacer uso de la forma :%s///
utiliza la última búsqueda como el patrón predeterminado:
:nmap ,c :%s///gn
Debería poder hacer una búsqueda y luego presionar ,c
para informar el número de coincidencias.
El único problema será que *
y #
ignoren ''smartcase''
, por lo que los resultados podrían desaparecer unos pocos después de usar *
. Puede solucionar esto haciendo *
seguido de /
Arriba ENTER y luego ,c
.
Una adición a la respuesta de @Al: si desea que vim lo muestre automáticamente en la línea de estado, intente agregar lo siguiente a la vimrc:
let s:prevcountcache=[[], 0]
function! ShowCount()
let key=[@/, b:changedtick]
if s:prevcountcache[0]==#key
return s:prevcountcache[1]
endif
let s:prevcountcache[0]=key
let s:prevcountcache[1]=0
let pos=getpos(''.'')
try
redir => subscount
silent %s///gne
redir END
let result=matchstr(subscount, ''/d/+'')
let s:prevcountcache[1]=result
return result
finally
call setpos(''.'', pos)
endtry
endfunction
set ruler
let &statusline=''%{ShowCount()} %<%f %h%m%r%=%-14.(%l,%c%V%) %P''
Ya tiene una buena cantidad de respuestas, pero me parece que todavía hay un enfoque más para este problema.
Esto es realmente algo con lo que tuve que lidiar hace unos días. Agregué una función y un mapeo de tal manera que tocas la asignación cuando el cursor está debajo de la palabra que deseas contar y devuelve el número de coincidencias.
La función:
" Count number of occurances of a word
function Count(word)
let count_word = "%s/" . a:word . "//gn"
execute count_word
endfunction
Y el mapeo:
" Count current word
nmap <Leader>w <Esc>:call Count(expand("<cword>"))<CR>
Búsqueda de índice de complementos
La más nueva versión here .
:vim[grep][!] /{pattern}/[g][j] {file} ...
Vimgrep usa el motor de búsqueda de expresiones regulares integrado de Vim, por lo que puede reutilizar los patrones del comando de búsqueda estándar de Vim. Entonces, primero pruebo el patrón de búsqueda de la manera normal usando: / {patrón} /
Luego ingrese lo siguiente:
:vim /CTRL+r//g %
donde CTRL+r/
insertará el último patrón de búsqueda después de la primera barra inclinada. La línea de estado se mostrará (1 de máximo), donde max es el número máximo de coincidencias para {pattern}
. Luego use el :cnext
y :cprev
para buscar las coincidencias siguientes y anteriores y :cfirst
y :clast
para la primera y la última coincidencia. Estos 4 comandos se pueden reasignar para hacerlos más rápidos de ejecutar.