Il existe une fonctionnalité intéressante dans Google Chrome lorsque vous effectuez une recherche. Il vous indique le nombre de correspondances pour le mot clé que vous recherchez. Cependant, dans Vim, je ne vois pas une telle fonctionnalité. Certaines personnes ont suggéré d'utiliser %s/pattern//gn
ou similaire:
http://vim.wikia.com/wiki/Count_number_of_matches_of_a_pattern
Impossible de compter le nombre de correspondances dans Vim
Mais c'est assez long, vraiment !! Je cherche le nombre lorsque vous appuyez sur '*', '%' ou effectuez une recherche à l'aide de '/' et '?'.
Une idée?
Plugin recherche par index .
Version la plus récente ici .
Un ajout à la réponse de @ Al: si vous voulez que vim l'affiche automatiquement dans la ligne d'état, essayez d'ajouter ce qui suit à 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'
Voici une solution peu coûteuse ... J'ai utilisé Rechercher et remplacer tout dans Vim. Aucun script de fantaisie. J'ai fait une recherche X et remplacé tout par X. À la fin, Vim rapporte "2134 substitutions sur 9892 lignes". X est apparu 2134 fois. Utilisez: q! pour quitter le fichier sans l'enregistrer. Pas de mal.
Vous avez déjà une grande richesse de réponses, mais il me semble qu’il existe encore une Approche de plus pour résoudre ce problème.
C’est en fait une question à laquelle j’ai dû faire face il ya quelques jours. J'ai ajouté une fonction et un mappage De sorte que vous appuyez sur le mappage lorsque le curseur se trouve sous le mot que vous voulez compter Et le nombre de correspondances est renvoyé.
La fonction:
" Count number of occurances of a Word
function Count(Word)
let count_Word = "%s/" . a:Word . "//gn"
execute count_Word
endfunction
Et la cartographie:
" Count current Word
nmap <Leader>w <Esc>:call Count(expand("<cword>"))<CR>
Alternativement, selon ce que @Al suggère, vous pouvez mapper la combinaison de touches pour écrire la majeure partie de la ligne, puis déplacez le curseur à la position où le motif actuel est inséré:
: nmap, c ^ [:% s /// gn ^ [OD ^ [OD ^ [OD ^ [OD
Où '^ [' est Ctrl+ V,Esc et '^ [OD' est Ctrl+ V,Left
Appuyez ensuite sur ', c' pour passer en mode commande, entrez le motif et laissez le curseur sur le second '/', prêt à insérer le motif.
Ce plugin ne fait que ça. https://github.com/osyo-manga/vim-anzu
Lors de la recherche d'un mot dans vim, il affichera le nombre de mots sur la ligne d'état. Il a également la possibilité d'afficher à côté du mot recherché, c'est-à-dire. this_is_my_sample_Word (3/12) ou this_is_my_sample_Word (7/12) . Ceci dit essentiellement: ceci est la 3ème ou la 7ème occurrence sur 12 occurrences totales.
:vim[grep][!] /{pattern}/[g][j] {file} ...
Vimgrep utilise le moteur de recherche regex intégré de Vim. Vous pouvez ainsi réutiliser les motifs à partir de la commande de recherche standard de Vim. J'ai donc d'abord testé le motif de recherche de la manière habituelle en utilisant:/{motif} /
Puis entrez les informations suivantes:
:vim /CTRL+r//g %
où CTRL+r/
insérera le dernier motif de recherche après la première barre oblique. La ligne d'état affiche (1 sur max), où max correspond au nombre maximal de correspondances pour {pattern}
. Utilisez ensuite :cnext
et :cprev
pour rechercher les correspondances suivantes et précédentes, et :cfirst
et :clast
pour les correspondances précédentes. Ces 4 commandes peuvent être remappées pour les rendre plus rapides à exécuter.