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

\ze position

Expand Messages
  • Axel Bender
    Is there any *native* (i.e. not programmed) way to access the column position of the last match s zs or ze? -- -- You received this message from the
    Message 1 of 6 , Mar 22, 2013
    • 0 Attachment
      Is there any *native* (i.e. not programmed) way to access the column position of the last match's \zs or \ze?

      --
      --
      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.
    • Ben Fritz
      ... You should be able to pass an empty string to the searchpos() function to re-use the last used search pattern. See :help searchpos() and :help search() for
      Message 2 of 6 , Mar 22, 2013
      • 0 Attachment
        On Friday, March 22, 2013 8:15:44 AM UTC-5, Axel Bender wrote:
        > Is there any *native* (i.e. not programmed) way to access the column position of the last match's \zs or \ze?

        You should be able to pass an empty string to the searchpos() function to re-use the last used search pattern. See :help searchpos() and :help search() for the various options when calling the function, such as the 'n' flag to not move the cursor.

        --
        --
        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.
      • Axel Bender
        @ben Sorry, I was too unspecific. I want to use the z[es] from the last match() to prevent searching for the same - complicated - expression two times (once
        Message 3 of 6 , Mar 22, 2013
        • 0 Attachment
          @ben

          Sorry, I was too unspecific. I want to use the \z[es] from the last match() to prevent searching for the same - complicated - expression two times (once with match() the second time with matchend()...).

          matchlist() might come to the rescue, but I expect that having access to these column positions would be faster.

          --
          --
          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.
        • Ben Fritz
          ... I don t know of a way to get both the beginning and end column of a match with a single function call. What are they needed for? Maybe there is a way to do
          Message 4 of 6 , Mar 22, 2013
          • 0 Attachment
            On Friday, March 22, 2013 10:51:07 AM UTC-5, Axel Bender wrote:
            > @ben
            >
            > Sorry, I was too unspecific. I want to use the \z[es] from the last match() to prevent searching for the same - complicated - expression two times (once with match() the second time with matchend()...).
            >
            > matchlist() might come to the rescue, but I expect that having access to these column positions would be faster.

            I don't know of a way to get both the beginning and end column of a match with a single function call.

            What are they needed for? Maybe there is a way to do what you need without them.

            As a general rule doing as much as possible with a built-in function is actually faster than doing it with manual vimscript, but obviously there are exceptions.

            --
            --
            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.
          • John Beckett
            ... I forget the details, but I sweated blood working out how to avoid getting stuck using match(), and came to the conclusion that two calls are required. I
            Message 5 of 6 , Mar 22, 2013
            • 0 Attachment
              Axel Bender wrote:
              > Sorry, I was too unspecific. I want to use the \z[es] from
              > the last match() to prevent searching for the same -
              > complicated - expression two times (once with match() the
              > second time with matchend()...).

              I forget the details, but I sweated blood working out how to
              avoid getting stuck using match(), and came to the conclusion
              that two calls are required. I believe this code is correct, and
              it may be of interest.

              http://vim.wikia.com/wiki/Copy_search_matches#GetMatches.28.29_alternative

              BTW my overflowing todo list includes that I will fix that tip.
              I have improved the code (which I use frequently), but even
              better is that newer Vims are able to use :s///n with a
              replacement expression to copy matches. The current tip has that
              technique, but it is absurdly convoluted because older Vims
              ignore the replacement expression if the n flag is used.

              John

              --
              --
              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.
            • Axel Bender
              Thanks for the feedback! I had hoped that - like in Perl - there is a [(possibly) undocumented] feature or a trick that lets you extract the start and the
              Message 6 of 6 , Mar 22, 2013
              • 0 Attachment
                Thanks for the feedback!

                I had hoped that - like in Perl - there is a [(possibly) undocumented] feature or a "trick" that lets you extract the start and the end positions (columns) after a *single* call to match(), using both \zs and \ze.

                I would prefer such a solution over having to determine the end position of the match with a second call to matchend(), employing the same set of - possibly "expensive" parameters.

                ...

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