Hi Jürgen! On Do, 26 Aug 2010, Jürgen Krämer wrote:
> Christian Brabandt wrote: > > Hi Tom! > > > > On Di, 24 Aug 2010, Tom wrote: > > > >> On Tue, Aug 24, 2010 at 09:51:56PM +0200, Christian Brabandt wrote: > >>> Hi Tom! > >>> > >>> On Di, 24 Aug 2010, Tom wrote: > >>> > >>>> How does one sort words with a line ? As example I have these numbers in > >>>> a > >>>> line: > >>>> > >>>> 400, 250, 125, 600 > >>>> > >>>> I want to sort them so they will be 125, 250, 400, 600 > >>>> > >>>> I have tried the visual command then !sort but that doesnt do it. > >>> > >>> :call setline(line('.'),join(sort(split(getline('.'))), ' ')) > >>> > >>> regards, > >>> Christian > >> > >> Amazing amazing that works also. Seems there is always more than one way > >> to > >> skin a cat. > > > > There is still room for improvement. For example if you consider this > > line: > > 400, 250, 125, 600, 100 > > this would be sorted to: > > 100 125, 250, 400, 600, > > (which looks not right if you look at the commas). > > > > So here is a slightly changed version: > > :call setline('.',join(sort(split(substitute(getline('.'), ',', '', 'g'))), > > ', ')) > > > > (one line) > > > > Basically, this replaces the comma and adds it later back. > > you can take advantage of the second, optional argument to split() and > save the call to substitute(): > > :call setline(line('.'),join(sort(split(getline('.'), ',\s*')), ', ')) > > This splits the line on every comma optionally followed by white-space. > If there is a trailing comma, split() automatically removes it. Like in > your second version the comma has to be added back later. True, I didn't think of that version. regards, Christian -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php