Je suppose que cela ne fonctionnerait que si aucun '. *' N'est utilisé dans le modèle
AK
10
Pas besoin de répéter la chaîne, faites-le %s/string//ng.
slm
23
(similaire à ce que dit Gustavo, mais en plus:)
Pour toute recherche antérieure , vous pouvez faire simplement:
:%s///gn
Un modèle n'est pas nécessaire, car il est déjà dans le registre de recherche ( @/).
"%" - faire s/dans tout le fichier
"g" - recherche globale (avec plusieurs résultats sur une ligne)
"n" - empêche tout remplacement de s/- rien n'est supprimé! rien ne doit être défait!
(voir: :help s_flagpour plus d'informations)
(De cette façon, cela fonctionne parfaitement avec " Rechercher du texte sélectionné visuellement ", comme décrit dans vim-wikia tip171 )
:vous entrez à partir Commandde Command-lineMode. Maintenant, tout ce que vous écrivez après :est sur CLI (Interface de ligne de commande)
%sspécifie toutes les lignes. Spécifier la plage comme %moyen d'effectuer une substitution dans tout le fichier. La syntaxe de la substitution de toutes les occurrences est:%s/old-text/new-text/g
gspécifie toutes les occurrences de la ligne. Avec le gdrapeau, vous pouvez faire remplacer toute la ligne. Si cet gindicateur n'est pas utilisé, seule la première occurrence de la ligne sera remplacée.
n spécifie le nombre d'occurrences de sortie
//la double barre oblique représente l'omission de replacement text. Parce que nous voulons juste trouver.
Une fois le nombre d'occurrences obtenu, vous pouvez appuyer sur la Ntouche pour voir les occurrences une par une.
Pour rechercher et compter dans une plage particulière du numéro de ligne 1 à 10:
: 1,10s / bonjour // gn
Veuillez noter %que le fichier entier est remplacé par ,des numéros de ligne séparés.
Pour rechercher et remplacer dans une plage particulière de ligne numéro 1 à 10:
Recherchez avec *pour faire une "recherche limitée" pour ce qui se trouve sous le curseur, ou effectuez une /patternrecherche standard .
Utilisez :%s///gnpour obtenir le nombre d'occurrences. Ou vous pouvez utiliser :%s///npour obtenir le nombre de lignes avec des occurrences.
** J'ai vraiment pu trouver un plug-in qui donnerait un message de "match N de N 1 sur N 2 lignes" à chaque recherche, mais hélas.
Remarque: ne soyez pas confus par la formulation délicate de la sortie. La première commande pourrait vous donner quelque chose comme ce que 4 matches on 3 linesle second pourrait vous donner 3 matches on 3 lines. Bien que techniquement précis, ce dernier est trompeur et devrait dire «3 lignes correspondent». Ainsi, comme vous pouvez le voir, il n'est vraiment jamais nécessaire d'utiliser cette dernière forme («n» uniquement). Vous obtenez les mêmes informations, plus clairement, et plus encore en utilisant le formulaire «gn».
:g/xxxx/d
) est terrible, dangereuse et inférieure aux autres sur cette page. Veuillez le désélectionner.Réponses:
Cela supprimera toutes les lignes avec le motif et indiquera le nombre de lignes supprimées. Annuler pour les récupérer après.
la source
LA façon est
:% s / modèle // gn
la source
Vous avez besoin du
n
drapeau. Pour compter les mots, utilisez:et un mot particulier:
Voir la
count-items
section documentation.Si vous tapez simplement:
alors la ligne d'état vous donnera également le nombre de correspondances dans vi.
la source
:% s / string / string / g donnera la réponse.
la source
%s/string//ng
.(similaire à ce que dit Gustavo, mais en plus:)
Pour toute recherche antérieure , vous pouvez faire simplement:
Un modèle n'est pas nécessaire, car il est déjà dans le registre de recherche (
@/
)."%" - faire
s/
dans tout le fichier"g" - recherche globale (avec plusieurs résultats sur une ligne)
"n" - empêche tout remplacement de
s/
- rien n'est supprimé! rien ne doit être défait!(voir:
:help s_flag
pour plus d'informations)(De cette façon, cela fonctionne parfaitement avec " Rechercher du texte sélectionné visuellement ", comme décrit dans vim-wikia tip171 )
la source
utilisation
lorsque la chaîne de motif est trop longue et que vous n'aimez pas tout taper à nouveau.
la source
Réponse courte :
Pour apprendre :
Il y a 3 modes dans l'éditeur VI comme ci-dessous
:
vous entrez à partirCommand
deCommand-line
Mode. Maintenant, tout ce que vous écrivez après:
est sur CLI (Interface de ligne de commande)%s
spécifie toutes les lignes. Spécifier la plage comme%
moyen d'effectuer une substitution dans tout le fichier. La syntaxe de la substitution de toutes les occurrences est:%s/old-text/new-text/g
g
spécifie toutes les occurrences de la ligne. Avec leg
drapeau, vous pouvez faire remplacer toute la ligne. Si cetg
indicateur n'est pas utilisé, seule la première occurrence de la ligne sera remplacée.n
spécifie le nombre d'occurrences de sortie//
la double barre oblique représente l'omission dereplacement text
. Parce que nous voulons juste trouver.Une fois le nombre d'occurrences obtenu, vous pouvez appuyer sur la
N
touche pour voir les occurrences une par une.Pour rechercher et compter dans une plage particulière du numéro de ligne 1 à 10:
%
que le fichier entier est remplacé par,
des numéros de ligne séparés.Pour rechercher et remplacer dans une plage particulière de ligne numéro 1 à 10:
la source
Je suggère de faire:
*
pour faire une "recherche limitée" pour ce qui se trouve sous le curseur, ou effectuez une/pattern
recherche standard .:%s///gn
pour obtenir le nombre d'occurrences. Ou vous pouvez utiliser:%s///n
pour obtenir le nombre de lignes avec des occurrences.** J'ai vraiment pu trouver un plug-in qui donnerait un message de "match N de N 1 sur N 2 lignes" à chaque recherche, mais hélas.
Remarque: ne soyez pas confus par la formulation délicate de la sortie. La première commande pourrait vous donner quelque chose comme ce que
4 matches on 3 lines
le second pourrait vous donner3 matches on 3 lines
. Bien que techniquement précis, ce dernier est trompeur et devrait dire «3 lignes correspondent». Ainsi, comme vous pouvez le voir, il n'est vraiment jamais nécessaire d'utiliser cette dernière forme («n» uniquement). Vous obtenez les mêmes informations, plus clairement, et plus encore en utilisant le formulaire «gn».la source