No edit summary |
JohnBeckett (talk | contribs) (Flag for deletion - obsoleted by plugin) |
||
Line 1: | Line 1: | ||
+ | {{Delete}} |
||
{{Review}} |
{{Review}} |
||
{{Tip |
{{Tip |
Revision as of 10:41, 25 July 2007
Tip: #124 - Number a group of lines
Created: October 1, 2001 16:37 Complexity: basic Author: Brian Medley Version: 5.7 Karma: 6/3 Imported from: Tip#124
Below is a way to number a set of lines. Here is an exaple before and after snapshot:
apple bob pear tree
1 apple 2 bob 3 pear 4 tree
Description:
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.
Examples:
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
Comments
There is now a plugin (nlist.vim) in the "scripts" section that does this. The plugin also handles justifying the numbers. I probably should have waited and not made this tip...
Brian Medley , October 1, 2001 22:25
TODO
Should we keep this tip if there is a plugin that superseeds it? I say no.