Wikia

Vim Tips Wiki

Search and sort by selection

Talk0
1,610pages on
this wiki
Revision as of 05:46, July 13, 2012 by JohnBot (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Tip 758 Printable Monobook Previous Next

created 2004 · complexity basic · author mosh · version 6.0


I need to sort log file by some substring (that cannot be precomputed, because it depends on data).

I would select substring with mouse, then press :g/<S-Insert>/m0 to move matching lines out of the way, it gets tedious, so here's the automation using vmap:

  1. Select any part of the string with v<move>
  2. Press 0, to move all matching lines to top of the file.
  3. Or press p, to see other matches.
  4. Or press $, to move junk to end of file.
" Sort by selection.
:vmap 0 :<BS><BS><BS><BS><BS>g<M-x>\M<S-Insert><M-x>m0<CR>
:vmap $ :<BS><BS><BS><BS><BS>g<M-x>\M<S-Insert><M-x>m$<CR>
:vmap p :<BS><BS><BS><BS><BS>g<M-x>\M<S-Insert><M-x>p<CR>

I used M-x as a delimiter and very non magic \M modifier to avoid errors on subtrings like 'c:/xyz/*.*'

CommentsEdit

The tip as given assumes that the selection is automatically copied to the clipboard. The following maps are more compatible, but modify the unnamed register. I also switched the maps to start with m, to preserve the original motions.

vmap m0 y:g<M-x>\M<C-R>"<M-x>m0<CR>
vmap m$ y:g<M-x>\M<C-R>"<M-x>m$<CR>
vmap mp y:g<M-x>\M<C-R>"<M-x>p<CR>

Advertisement | Your ad here

Around Wikia's network

Random Wiki