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

multiple substitutions of individual characters

Expand Messages
  • Chris Lott
    I have a mapping in my .vimrc to replace smart typographic characters with their plain text counterparts: map ,fq
    Message 1 of 3 , Jun 20, 2013
    • 0 Attachment
      I have a mapping in my .vimrc to replace "smart" typographic
      characters with their plain text counterparts:

      map ,fq :%s/“/"/e<enter>:%s/”/"/e<enter>:%s/‘/'/e<enter>:%s/’/'/e<enter>:%s/–/--/e<enter>:%s/—/---/e<enter>:%s/…/.../e<enter>

      It strikes me that this is probably not the best way to go about
      this...I was thinking it would be cleaner to somehow use an array of
      characters and replacements (or something similar)?

      c
      --
      Chris Lott <chris@...>

      --
      --
      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.
    • Christian Brabandt
      ... You can define this as a dictionary like this: let typo = {} let typo[ “ ] = let typo[ ” ] = let typo[ ‘ ] = let typo[ ’ ] = let
      Message 2 of 3 , Jun 20, 2013
      • 0 Attachment
        On Fri, June 21, 2013 07:40, Chris Lott wrote:
        > I have a mapping in my .vimrc to replace "smart" typographic
        > characters with their plain text counterparts:
        >
        > map ,fq
        > :%s/“/"/e<enter>:%s/”/"/e<enter>:%s/‘/'/e<enter>:%s/’/'/e<enter>:%s/–/--/e<enter>:%s/—/---/e<enter>:%s/…/.../e<enter>
        >
        > It strikes me that this is probably not the best way to go about
        > this...I was thinking it would be cleaner to somehow use an array of
        > characters and replacements (or something similar)?

        You can define this as a dictionary like this:

        let typo = {}
        let typo["“"] = '"'
        let typo["”"] = '"'
        let typo["‘"] = "'"
        let typo["’"] = "'"
        let typo["–"] = '--'
        let typo["—"] = '---'
        let typo["…"] = '...'

        and then you can replace it using:

        :exe ":%s/".join(keys(typo), '\|').'/\=typo[submatch(0)]/ge'

        (which turns the keys of the typo dictionary into a regular expression
        and uses the values of the dictionary as replacements).

        I think this is simple enough to add additional typographic
        chars and replacement characters.

        regards,
        Christian.

        --
        --
        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.
      • Claus Atzenbeck
        ... You could use Tim Pope s Abolish plugin: ... Hope this helps. Best, Claus -- -- You received this message from the vim_use maillist. Do not top-post!
        Message 3 of 3 , Jun 21, 2013
        • 0 Attachment
          On Thu, 20 Jun 2013 at 9:40pm -0800, Chris Lott wrote:

          > I have a mapping in my .vimrc to replace "smart" typographic
          > characters with their plain text counterparts:
          >
          > map ,fq :%s/“/"/e<enter>:%s/”/"/e<enter>:%s/‘/'/e<enter>:%s/’/'/e<enter>:%s/–/--/e<enter>:%s/—/---/e<enter>:%s/…/.../e<enter>
          >
          > It strikes me that this is probably not the best way to go about
          > this...I was thinking it would be cleaner to somehow use an array of
          > characters and replacements (or something similar)?

          You could use Tim Pope's Abolish plugin:
          <http://www.vim.org/scripts/script.php?script_id=1545>:

          :%Subvert/{“,”,‘,’,–,—,…}/{\",\",',',--,---,...}/g

          or short (with a capital "S", not "s"):

          :%S/{“,”,‘,’,–,—,…}/{\",\",',',--,---,...}/g

          Hope this helps.

          Best,
          Claus

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