Recherchez la chaîne et obtenir le comte dans l'éditeur vi
Je recherche une chaîne de caractères et de trouver le nombre d'occurrences dans un fichier à l'aide de l'éditeur vi.
- La réponse sélectionnée (
:g/xxxx/d
)est terrible, dangereux, et sont inférieures à d'autres sur cette page. Merci de le désélectionner. - je suis d'accord et il ne vous raconte pas les lignes supprimées "et non pas "événements supprimés"
Vous devez vous connecter pour publier un commentaire.
Cela permettra de supprimer toutes les lignes avec le motif, et combien de supprimé. Annuler pour revenir après.
LA voie est
:%s/motif//gn
Vous avez besoin de la
n
drapeau. Pour compter les mots d'usage:et un mot particulier:
Voir
count-articles
section documentation.Si vous tapez simplement:
puis la ligne d'état vous donnera le nombre de matches en vi ainsi.
:%s/string/string/g
pourra donner la réponse.
%s/string//ng
.(similaire comme Gustavo dit, mais en plus: )
Pour tout précédemment de recherche, vous pouvez le faire simplement:
Un motif n'est pas nécessaire, car il est déjà dans la recherche-s'inscrire (
@/
)."%" - ne
s/
dans l'ensemble du fichier"g" - global de recherche (plusieurs fois dans une ligne)
"n" empêche tout remplacement de
s/
-- rien n'est supprimé! rien ne doit être annulée!(voir:
:help s_flag
pour plus d'informations)(De cette façon, il fonctionne parfaitement avec "Rechercher visuellement le texte sélectionné", comme décrit dans vim-wikia tip171)
utilisation
lorsque le motif de chaîne est trop longue et que vous n'aimez pas le type de tout à nouveau.
Je suggère de faire:
*
pour faire un "délimitée de recherche" pour ce qui est sous le curseur, ou faire un standard/pattern
de recherche.:%s///gn
pour obtenir le nombre d'occurrences. Ou vous pouvez utiliser:%s///n
pour obtenir le nombre de lignes contenant des occurrences.** J'ai vraiment avec que j'ai pu trouver un plug-in qui permettrait de donner de la messagerie de "match N de N1 N2 les lignes", à chaque recherche, mais hélas.
Note:
Ne soyez pas surpris par la complexité de la formulation de la sortie. L'ancienne commande peut vous donner quelque chose comme
4 matches on 3 lines
où celui-ci pourrait vous donner3 matches on 3 lines
. Alors que techniquement précis, ce dernier est trompeuse et doit dire '3 lignes de match". Donc, comme vous pouvez le voir, il n'y a vraiment jamais besoin d'utiliser ce dernier ('n' uniquement) forme. Vous obtenez les mêmes infos, plus clairement, et de plus en utilisant le " gn " la forme.