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

How to match one OR another word?

Expand Messages
  • Andrei Kulakov
    Hi, how can I get this to work: imap - =synIDattr(synIDtrans(synID(line( . ),col( . )-1,1)), name )=~ (String)||(Comment) ? - : _ And how can
    Message 1 of 4 , Apr 12 1:07 PM
    • 0 Attachment
      Hi, how can I get this to work:

      imap - <c-r>=synIDattr(synIDtrans(synID(line("."),col(".")-1,1)),"name")=~"(String)||(Comment)" ? '-' : '_'<cr>

      And how can this be found in Vim manual?

      --
      --
      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/d/optout.
    • Christian Brabandt
      ... What are you trying to achieve? ... I think this should be: imap -
      Message 2 of 4 , Apr 12 2:47 PM
      • 0 Attachment
        On Sa, 12 Apr 2014, Andrei Kulakov wrote:

        > Hi, how can I get this to work:

        What are you trying to achieve?
        >
        > imap -
        > <c-r>=synIDattr(synIDtrans(synID(line("."),col(".")-1,1)),"name")=~"(String)||(Comment)"
        > ? '-' : '_'<cr>

        I think this should be:
        imap - <c-r>=synIDattr(synIDtrans(synID(line("."),col(".")-1,1)),"name")=~?'String\\|Comment'?'-':'_'<cr>

        I am not sure, why the \ needs to be doubled. I guess it has to be
        escaped, because it is evaluated twice or something.

        > And how can this be found in Vim manual?
        Depends on what your problem in understanding is. For starters, look here:

        :h i_CTRL-R_=
        :h synIDattr()
        :h synIDtrans()
        :h synID()
        :h line()
        :h col()
        :h expr1
        :h expr4
        :h /bar
        :h /\(

        Best,
        Christian
        --
        Der Ärger ist als Gewitter, nicht als Dauerregen gedacht; er soll die
        Luft reinigen und nicht die Ernte verderben.
        -- Ernst R. Hauschka

        --
        --
        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/d/optout.
      • Nikolay Pavlov
        ... =synIDattr(synIDtrans(synID(line( . ),col( . )-1,1)), name )=~ (String)||(Comment) ...
        Message 3 of 4 , Apr 12 2:55 PM
        • 0 Attachment


          On Apr 13, 2014 1:47 AM, "Christian Brabandt" <cblists@...> wrote:
          >
          >
          > On Sa, 12 Apr 2014, Andrei Kulakov wrote:
          >
          > > Hi, how can I get this to work:
          >
          > What are you trying to achieve?
          > >
          > > imap -
          > > <c-r>=synIDattr(synIDtrans(synID(line("."),col(".")-1,1)),"name")=~"(String)||(Comment)"
          > > ? '-' : '_'<cr>
          >
          > I think this should be:
          > imap - <c-r>=synIDattr(synIDtrans(synID(line("."),col(".")-1,1)),"name")=~?'String\\|Comment'?'-':'_'<cr>
          >
          > I am not sure, why the \ needs to be doubled. I guess it has to be
          > escaped, because it is evaluated twice or something.

          One escaping for :map (so bar is not treated as commands separator), one for regex engine.

          > > And how can this be found in Vim manual?

          I would say that OP needs to read all of :h pattern.

          > Depends on what your problem in understanding is. For starters, look here:
          >
          > :h i_CTRL-R_=
          > :h synIDattr()
          > :h synIDtrans()
          > :h synID()
          > :h line()
          > :h col()
          > :h expr1
          > :h expr4
          > :h /bar
          > :h /\(
          >
          > Best,
          > Christian
          > --
          > Der Ärger ist als Gewitter, nicht als Dauerregen gedacht; er soll die
          > Luft reinigen und nicht die Ernte verderben.
          >                 -- Ernst R. Hauschka
          >
          > --
          > --
          > 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/d/optout.

          --
          --
          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/d/optout.
        • Andrei Kulakov
          Thanks Christian, this works great! When I tried | it didn t work and I assumed pattern.txt refers to patterns used with search command and there are some
          Message 4 of 4 , Apr 12 8:17 PM
          • 0 Attachment
            Thanks Christian, this works great!

            When I tried \| it didn't work and I assumed pattern.txt refers to patterns used with
            search command and there are some special rules when you use matching with =~ .

            I've run into double escape issue before but I keep forgetting to do that.. thanks again!  -ak



            On Sat, Apr 12, 2014 at 5:55 PM, Nikolay Pavlov <zyx.vim@...> wrote:


            On Apr 13, 2014 1:47 AM, "Christian Brabandt" <cblists@...> wrote:
            >
            >
            > On Sa, 12 Apr 2014, Andrei Kulakov wrote:
            >
            > > Hi, how can I get this to work:
            >
            > What are you trying to achieve?
            > >
            > > imap -
            > > <c-r>=synIDattr(synIDtrans(synID(line("."),col(".")-1,1)),"name")=~"(String)||(Comment)"
            > > ? '-' : '_'<cr>
            >
            > I think this should be:
            > imap - <c-r>=synIDattr(synIDtrans(synID(line("."),col(".")-1,1)),"name")=~?'String\\|Comment'?'-':'_'<cr>
            >
            > I am not sure, why the \ needs to be doubled. I guess it has to be
            > escaped, because it is evaluated twice or something.

            One escaping for :map (so bar is not treated as commands separator), one for regex engine.

            > > And how can this be found in Vim manual?

            I would say that OP needs to read all of :h pattern.

            > Depends on what your problem in understanding is. For starters, look here:
            >
            > :h i_CTRL-R_=
            > :h synIDattr()
            > :h synIDtrans()
            > :h synID()
            > :h line()
            > :h col()
            > :h expr1
            > :h expr4
            > :h /bar
            > :h /\(
            >
            > Best,
            > Christian
            > --
            > Der Ärger ist als Gewitter, nicht als Dauerregen gedacht; er soll die
            > Luft reinigen und nicht die Ernte verderben.
            >                 -- Ernst R. Hauschka
            >
            > --
            > --
            > 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/d/optout.

            --
            --
            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/d/optout.

            --
            --
            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/d/optout.
          Your message has been successfully submitted and would be delivered to recipients shortly.