Ad blocker interference detected!
Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers
Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.
created 2006 · complexity basic · author Robert Stovall · version 7.0
Vim has a very powerful built-in sort utility, or it can interface with an external one. In order to keep only unique lines in Vim, you would:
Yes, it's that simple.
You could create a range in advance, such as
'a,. (from mark 'a' to the current line) or you could create one on-the-fly using visual selection by pressing ':' in visual mode, after selecting the text you wish to sort, to get a range of
'<,'> on the command line.
If you like using an external sort utility instead, you can do it just as easily. For example, Unix sort, removing duplicate lines:
Many other systems also have an external sort utility, but the options and capabilities will differ. It is probably better to use the built-in Vim sort unless you are looking for a specific feature of the external sort (or using an old Vim without the
Sort in reverseEdit
Sort, removing duplicate linesEdit
Sort using the external Unix sort utility, respecting month-name orderEdit
("respecting month-name order" means January < February < ... < December)
(this way, 100 doesn't precede 20 in the sort)
Sort subsections independently, in this example sort numbers between "start" and "end" markersEdit
:g/start/+1,/end/-1 sort n
- 374 Use filter commands to process text
- 588 How to sort using visual blocks
- 758 Search and sort by selection
- 800 Sorting lines in a file based on the number of words in each line
- 923 Sort lines by a specified word number
- 667 Working with CSV files sort by CSV field
- 128 Use Unix command-line tools in Windows links to download GNU sort for Windows
- 648 Uniq - Removing duplicate lines techniques to remove duplicate lines
- Probably need some general
- Give examples of numeric sort and using regex sort.
- Clean up my "see also" list. It's useful now for a comprehensive list of related tips, some of which need work. At least should add a note on point of tip.
- If we're going to mention an external sort tool, we may as well include the following with a brief explanation. Vim could do this, but only with a complex regex. Or perhaps better, mention it in VimTip374 or VimTip923 in "see also".
-k2sorts on the second field (word by default).
This misguided snippet was added recently:
- delimit the column using some char here I have | symbol as delimiter, once did with that you can use below command to sort specific column use -n if u want to sort numeric and its working on some version of vi and not on ubuntu vi :(
/|.*|/ | sort
- used to match a patern |.*| used to match words delimited between || and | as piping commend and sort to sort
This is wrong and should never work. Here's what it is actually doing:
/|.*|/: jump to the next line that has two '|' characters in it, anywhere
|: command separator, this lets you start a new command on the current line
sort: do a default sort of the entire buffer
Basically this is the equivalent of typing
Now, what you CAN do, is provide a pattern that the
:sort command will skip over and ignore at the start of every line while sorting. For example, to sort based only on text after the last '|' character on the line (what I think was intended by the example), you'd do this: