Thursday, June 20, 2013

Re: multiple substitutions of individual characters

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@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment