Wikia

Vim Tips Wiki

Changes: Number a group of lines

Edit

Back to page

(Move categories to tip template)
(Remove html character entities)
 
Line 47: Line 47:
   
 
<pre>
 
<pre>
:'&lt;,'&gt;Nlist
+
:'<,'>Nlist
:'&lt;,'&gt;call Nlist()
+
:'<,'>call Nlist()
 
</pre>
 
</pre>
   
Line 62: Line 62:
   
 
<pre>
 
<pre>
:'&lt;,'&gt;Nlist . ]\
+
:'<,'>Nlist . ]\
:'&lt;,'&gt;call Nlist(".", "] ")
+
:'<,'>call Nlist(".", "] ")
   
command! -nargs=* -range Nlist &lt;line1&gt;,&lt;line2&gt;call Nlist(&lt;f-args&gt;)
+
command! -nargs=* -range Nlist <line1>,<line2>call Nlist(<f-args>)
 
</pre>
 
</pre>
   

Latest revision as of 08:30, September 28, 2008

Tip 124 Printable Monobook Previous Next

created October 1, 2001 · complexity basic · author Brian Medley · version 5.7


Below is a way to number a set of lines. Here is an example before and after snapshot:

apple
bob
pear
tree

1 apple
2 bob
3 pear
4 tree

DescriptionEdit

This provides a command and a function. They both can be called with or without a range. In addition, they can be called with or without arguments. Without a range they operate on the current line.

There are two supported arguments. They are described below:

  • arg1 the number to start at. The default is one. This will

number your selected lines sequentially. The start can be a number, ., $, or, 'x (like getline).

  • arg2 Text to append after numbers. The default is a space.

ExamplesEdit

To provide your functionality:

:%Nlist 20
:%call Nlist(20)

To make a list start at 1:

:'<,'>Nlist
:'<,'>call Nlist()

To number the whole buffer (with it's actual line number):

:%Nlist
:%call Nlist()

To number a subset of lines with their line number (and put a '] ' in front of every number):

:'<,'>Nlist . ]\
:'<,'>call Nlist(".", "] ")

command! -nargs=* -range Nlist <line1>,<line2>call Nlist(<f-args>)
function! Nlist(...) range
  if 2 == a:0
    let start = a:1
    let append = a:2
  elseif 1 == a:0
    let start = a:1
    let append = " "
  else
    let start = 1
    let append = " "
  endif
  " try to work like getline (i.e. allow the user to pass in . $ or 'x)
  if 0 == (start + 0)
    let start = line(start)
  endif
  exe a:firstline . "," . a:lastline . 's/^/\=line(".")-a:firstline+start.append/'
endfunction

CommentsEdit

There is now a plugin nlist.vim that does this. The plugin also handles justifying the numbers. I probably should have waited and not made this tip.


Around Wikia's network

Random Wiki