Vim Tips Wiki
Explore
Main Page
All Pages
Community
Interactive Maps
Community portal
To do
FANDOM
Fan Central
BETA
Games
Anime
Movies
TV
Video
Wikis
Explore Wikis
Community Central
Start a Wiki
Don't have an account?
Register
Sign In
Sign In
Register
Vim Tips Wiki
1,649
pages
Explore
Main Page
All Pages
Community
Interactive Maps
Community portal
To do
Editing
Number a group of lines
Back to page
Edit
Edit source
View history
Talk (0)
We recommend that you
log in
before editing. This will allow other users to leave you a message about your edit, and will let you track edits via your
Watchlist
.
Creating an account
is quick and free.
Anti-spam check. Do
not
fill this in!
{{TipImported |id=124 |previous=123 |next=125 |created=October 1, 2001 |complexity=basic |author=Brian Medley |version=5.7 |rating=6/3 |category1=Scripting |category2= }} Below is a way to number a set of lines. Here is an example before and after snapshot: <pre> apple bob pear tree 1 apple 2 bob 3 pear 4 tree </pre> ===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: <pre> :%Nlist 20 :%call Nlist(20) </pre> To make a list start at 1: <pre> :'<,'>Nlist :'<,'>call Nlist() </pre> To number the whole buffer (with it's actual line number): <pre> :%Nlist :%call Nlist() </pre> To number a subset of lines with their line number (and put a '] ' in front of every number): <pre> :'<,'>Nlist . ]\ :'<,'>call Nlist(".", "] ") command! -nargs=* -range Nlist <line1>,<line2>call Nlist(<f-args>) </pre> <pre> 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 </pre> ==Comments== There is now a plugin {{script|id=101|text=nlist.vim}} that does this. The plugin also handles justifying the numbers. I probably should have waited and not made this tip. ----
Summary:
Please note that all contributions to the Vim Tips Wiki are considered to be released under the CC-BY-SA
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Navigation
(
view source
)
Template:Script
(
view source
)
Template:TipImported
(
view source
)
Follow on IG
TikTok
Join Fan Lab