Vim Tips Wiki
No edit summary
m (Reverted edits by 175.143.29.231 (talk | block) to last version by JohnBeckett)
(9 intermediate revisions by 7 users not shown)
Line 6: Line 6:
 
|complexity=basic
 
|complexity=basic
 
|author=Marc Weber
 
|author=Marc Weber
|version=5.7
+
|version=7.0
 
|rating=4/19
 
|rating=4/19
 
|category1=Searching
 
|category1=Searching
 
|category2=
 
|category2=
 
}}
 
}}
To count the number of matches of a pattern, you could enter a substitute command such as
+
To count the number of matches of a pattern, use the [[Search and replace|substitute command]] with the <code>n</code> flag. The following shows the number of times that <code>pattern</code> matches text in the current buffer:
 
 
<pre>
 
<pre>
:%s/pattern/foo/g
+
:%s/pattern//gn
 
</pre>
 
</pre>
   
 
Omit <code>g</code> to display the number of lines where the pattern matches:
After viewing the count in the status line, press <tt>u</tt> to undo the change.
 
 
However, in recent versions of Vim, there is a better procedure. The following will display the count, but will not change the buffer.
 
 
 
<pre>
 
<pre>
:%s/pattern//gn
+
:%s/pattern//n
 
</pre>
 
</pre>
   
  +
To restrict the count to a region of the text, specify a range instead of <code>%</code> (<code>%</code> means all lines). For example, the following counts the number of occurrences in lines 10 to 50 inclusive:
Similarly you can display the number of lines the pattern matches by omitting the g.
 
 
 
<pre>
 
<pre>
:%s/pattern//n
+
:10,50s/pattern//gn
 
</pre>
 
</pre>
   
  +
The following counts the number of occurrences in the lines in the most recent [[visual selection]].
In newer versions of VIM, if you want to know the amount of matches of some lines, you may use the substitute command without the % such as:
 
 
 
<pre>
 
<pre>
:3s/pattern//gn
+
:'<'>s/pattern//gn
 
</pre>
 
</pre>
   
  +
==Word under cursor==
of
 
  +
To count the number of occurrences of the last used search pattern, you can leave out the pattern entirely:
 
 
<pre>
 
<pre>
'<'>s/pattern//gn
+
:%s///gn
 
</pre>
 
</pre>
  +
This makes it easy to count the number of occurrences of the word under the cursor: first press <code>*</code> to [[Searching|search for the current word]], then enter <code>:%s///gn</code> to count all occurrences of that word.
  +
 
==Comments==
 
==Comments==

Revision as of 15:49, 27 May 2015

Tip 860 Printable Monobook Previous Next

created 2005 · complexity basic · author Marc Weber · version 7.0


To count the number of matches of a pattern, use the substitute command with the n flag. The following shows the number of times that pattern matches text in the current buffer:

:%s/pattern//gn

Omit g to display the number of lines where the pattern matches:

:%s/pattern//n

To restrict the count to a region of the text, specify a range instead of % (% means all lines). For example, the following counts the number of occurrences in lines 10 to 50 inclusive:

:10,50s/pattern//gn

The following counts the number of occurrences in the lines in the most recent visual selection.

:'<'>s/pattern//gn

Word under cursor

To count the number of occurrences of the last used search pattern, you can leave out the pattern entirely:

:%s///gn

This makes it easy to count the number of occurrences of the word under the cursor: first press * to search for the current word, then enter :%s///gn to count all occurrences of that word.

Comments