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

increment list

Expand Messages
  • shawn wilson
    Quite often I ve got a list, either: 1 - do this first 2 - do this next 3 - go home or /^ ([0-3][0-9])- # 0 Day ([A-Z][a-z][a-z])- # 1 Month ([0-9]{4}) # 2
    Message 1 of 4 , May 9, 2013
    • 0 Attachment
      Quite often I've got a list, either:

      1 - do this first
      2 - do this next
      3 - go home

      or
      /^
      ([0-3][0-9])- # 0 Day
      ([A-Z][a-z][a-z])- # 1 Month
      ([0-9]{4}) # 2 Year
      /x;

      And I alter something and need to change the list. I can make a macro
      where I 'j0cw' or 'f#wcw' but then how do I make the incrementing
      work?

      --
      --
      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

      ---
      You received this message because you are subscribed to the Google Groups "vim_use" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • Charles Campbell
      ... I believe that visincr will do what you want; you can get visincr from: http://www.drchip.org/astronaut/vim/index.html#VISINCR (cutting edge)
      Message 2 of 4 , May 9, 2013
      • 0 Attachment
        shawn wilson wrote:
        > Quite often I've got a list, either:
        >
        > 1 - do this first
        > 2 - do this next
        > 3 - go home
        >
        > or
        > /^
        > ([0-3][0-9])- # 0 Day
        > ([A-Z][a-z][a-z])- # 1 Month
        > ([0-9]{4}) # 2 Year
        > /x;
        >
        > And I alter something and need to change the list. I can make a macro
        > where I 'j0cw' or 'f#wcw' but then how do I make the incrementing
        > work?
        >
        I believe that visincr will do what you want; you can get visincr from:

        http://www.drchip.org/astronaut/vim/index.html#VISINCR (cutting edge)
        http://vim.sf.net/scripts/script.php?script_id=670 (stable)

        Quick Overview:

        :I [#] left justified incremented list
        :II [# [zfill]] right justified incremented list
        :IO [#] left justified octal incremented list
        :IIO [# [zfill]] right justified octal incremented list
        :IX [#] left justified hex. incremented lsit
        :IIX [# [zfill]] right justified hex. incremented lsit
        :IYMD [# [zfill]] year/month/day incremented list
        :IMDY [# [zfill]] month/day/year incremented list
        :IDMY [# [zfill]] day/month/year incremented list
        :IA [#] alphameric incremented list
        :ID [#] dayname incremented list
        :IM [#] monthname incremented list

        Installation: if you're using vim 7.2 or 7.3,

        vim visincr.vba.gz
        :so %
        :q

        Regards,
        C Campbell

        --
        --
        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

        ---
        You received this message because you are subscribed to the Google Groups "vim_use" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      • Paul Isambert
        ... You can try defining a function like this: function! Increment (...) range let i = a:firstline let pattern = a:0 ? a:1 : d + while i
        Message 3 of 4 , May 9, 2013
        • 0 Attachment
          > Quite often I've got a list, either:
          >
          > 1 - do this first
          > 2 - do this next
          > 3 - go home
          >
          > or
          > /^
          > ([0-3][0-9])- # 0 Day
          > ([A-Z][a-z][a-z])- # 1 Month
          > ([0-9]{4}) # 2 Year
          > /x;
          >
          > And I alter something and need to change the list. I can make a macro
          > where I 'j0cw' or 'f#wcw' but then how do I make the incrementing
          > work?

          You can try defining a function like this:

          function! Increment (...) range
          let i = a:firstline
          let pattern = a:0 ? a:1 : '\d\+'
          while i <= a:lastline
          call setline(i, substitute(getline(i), pattern, '\=submatch(0)+1', ''))
          let i += 1
          endwhile
          endfunction

          Then you can call Increment on a range and it will increment all numbers matching the given pattern (or the first encountered number if no pattern is given). For instance, the first lists could be incremented with

          :'<,'>call Increment()

          (in Visual mode) and the second with

          :'<,'>call Increment('#\s*\zs\d\+')

          (Don't forget `\zs'!)

          That was just off my head, though, and simpler solutions may exist.

          Best,
          Paul

          --
          --
          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

          ---
          You received this message because you are subscribed to the Google Groups "vim_use" group.
          To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        • shawn wilson
          Thanks y all. I m not sure which I like better. (probably the simple function though) -- -- You received this message from the vim_use maillist. Do not
          Message 4 of 4 , May 9, 2013
          • 0 Attachment

            Thanks y'all. I'm not sure which I like better. (probably the simple function though)

            --
            --
            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
             
            ---
            You received this message because you are subscribed to the Google Groups "vim_use" group.
            To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
            For more options, visit https://groups.google.com/groups/opt_out.
             
             
          Your message has been successfully submitted and would be delivered to recipients shortly.