sort rows in 'VI' editor

Try:

:%!sort

It will sort according the whole line alphabetically. If you want to sort numerically (i.e. the number in the first column can have different widt), then try:

:%!sort -n

Don't worry about the =, it will not modify any line, it will just change their order.


You can do the following to see the sorted output:

:!sort %

Explanation:

  • : : to enter ex mode.
  • ! : allows you to run a shell command.
  • % : the name of the file currently open.

To sort the file by changing it you can redirect its output to a temp file and then copy its content back to the original file:

:!(sort %>/tmp/tmp;cp -f /tmp/tmp %)

This answer is coming 2 years late, but might still be relevant, in visual mode select the block you want to sort and run:

:!sort

I'm not sure exactly when in the last eight years vi built this in, but you can now run:

:sort n

to sort numerical entries instead of using :! to run the sort command. See :help sort

Tags:

Vi

Text Editor