Loading ...
Sorry, an error occurred while loading the content.

84527Re: regexp to identify N duplicates parts into several lines

Expand Messages
  • Andy Wokula
    Nov 1, 2007
      Ben Schmidt schrieb:
      >> g/\(^[^/]\+;\)\(.*\n\)\(\(^\1\)\(.*\n\)\)\{1,\}/t$
      >>
      >> This regexp search highlights correctly the three first lines because
      >> there is three times sortie.cpp,
      >> it highlights the three lines after because there is three sortie.h
      >> but it does not copy all highlighted at the end of the file.
      >
      > As documented, :g only runs its command on the first line of multi-line matches.
      >
      > You will need to do something a bit more complicated.
      >
      > I would suggest:
      >
      > 1. Clear some register, say "a. :let @a=""
      >
      > 2. Make the :g command append each match to that register using yank:
      >
      > :g/\(^[^/]\+;\)\(.*\n\)\(\(^\1\)\(.*\n\)\)\{1,\}/exe "normal \"Ay//e\<CR>"

      :g/\%(^\1;.*\n\)\@<!\_^\([^;]*\);.*\(\n\1;.*\)\+$/exe "norm! \"AyV//e\r"

      > 3. Move to the end of your buffer and put the register. :$put a
      >
      > Hope this helps!
      >
      > Ben.

      --
      Andy

      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_use" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • Show all 8 messages in this topic