> After more than 10 years of using vim I realized I don't know how to
> paste text..
>
> The insert mode mapping I have is: x<bs><esc>"+]p
>
> I'm getting really weird results with a snippet I'm pasting from a web
> page, using GVim 7.3 (this is the snippet before paste):
>
>
> def moneyfmt(value, places=2, curr='', sep=',', dp='.',
> pos='', neg='-', trailneg=''):
> """Convert Decimal to a money formatted string.
>
> places: required number of places after the decimal point
> curr: optional currency symbol before the sign (may be blank)
> sep: optional grouping separator (comma, period, space, or blank)
> dp: decimal point indicator (comma or period)
> only specify as blank when places is zero
> pos: optional sign for positive numbers: '+', space or blank
> neg: optional sign for negative numbers: '-', '(', space or blank
> trailneg:optional trailing minus indicator: '-', ')', space or blank
>
> >>> d = Decimal('-1234567.8901')
> >>> moneyfmt(d, curr='$')
> '-$1,234,567.89'
> >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
> '1.234.568-'
> >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
> '($1,234,567.89)'
> >>> moneyfmt(Decimal(123456789), sep=' ')
> '123 456 789.00'
> >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
> '<0.02>'
>
> """
> q = Decimal(10) ** -places # 2 places --> '0.01'
> sign, digits, exp = value.quantize(q).as_tuple()
> result = []
> digits = map(str, digits)
> build, next = result.append, digits.pop
> if sign:
> build(trailneg)
> for i in range(places):
> build(next() if digits else '0')
> build(dp)
> if not digits:
> build('0')
> i = 0
> while digits:
> build(next())
> i += 1
> if i == 3 and digits:
> i = 0
> build(sep)
> build(curr)
> build(neg if sign else pos)
> return ''.join(reversed(result))
>
>
>
> when I'm pasting at an existing indent of 4 spaces, I get:
>
>
>
> def moneyfmt(value, places=2, curr='', sep=',', dp='.',
> pos='', neg='-', trailneg=''):
> """Convert Decimal to a money formatted string.
>
> places: required number of places after the decimal point
> curr: optional currency symbol before the sign (may be blank)
> sep: optional grouping separator (comma, period, space, or blank)
> dp: decimal point indicator (comma or period)
> only specify as blank when places is zero
> pos: optional sign for positive numbers: '+', space or blank
> neg: optional sign for negative numbers: '-', '(', space or blank
> trailneg:optional trailing minus indicator: '-', ')', space or blank
>
> >>> d = Decimal('-1234567.8901')
> >>> moneyfmt(d, curr='$')
> '-$1,234,567.89'
> >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
> '1.234.568-'
> >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
> '($1,234,567.89)'
> >>> moneyfmt(Decimal(123456789), sep=' ')
> '123 456 789.00'
> >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
> '<0.02>'
>
> """
> q = Decimal(10) ** -places # 2 places --> '0.01'
> sign, digits, exp = value.quantize(q).as_tuple()
> result = []
> digits = map(str, digits)
> build, next = result.append, digits.pop
> if sign:
> build(trailneg)
> for i in range(places):
> build(next() if digits else '0')
> build(dp)
> if not digits:
> build('0')
> i = 0
> while digits:
> build(next())
> i += 1
> if i == 3 and digits:
> i = 0
> build(sep)
> build(curr)
> build(neg if sign else pos)
> return ''.join(reversed(result))
>
>
>
> Why is one indented block preserved near the end while all others are
> flattened? If I paste at 0 indent, all indent is flattened.
>
> Seems like 'paste' option doesn't make a difference in gvim except
> that it stops my alt-key shortcut from working in insert mode.
>
> How can I do a normal, proper paste at an existing indent with a
> keyboard shortcut (i.e. same as what you get with middle mouse button,
> so that every line is at an indent I begin with plus whatever indent
> is in the copied text)?:
>
>
>
>
> def moneyfmt(value, places=2, curr='', sep=',', dp='.',
> pos='', neg='-', trailneg=''):
> """Convert Decimal to a money formatted string.
>
> places: required number of places after the decimal point
> curr: optional currency symbol before the sign (may be blank)
> sep: optional grouping separator (comma, period, space, or blank)
> dp: decimal point indicator (comma or period)
> only specify as blank when places is zero
> pos: optional sign for positive numbers: '+', space or blank
> neg: optional sign for negative numbers: '-', '(', space or blank
> trailneg:optional trailing minus indicator: '-', ')', space or blank
>
> >>> d = Decimal('-1234567.8901')
> >>> moneyfmt(d, curr='$')
> '-$1,234,567.89'
> >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
> '1.234.568-'
> >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
> '($1,234,567.89)'
> >>> moneyfmt(Decimal(123456789), sep=' ')
> '123 456 789.00'
> >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
> '<0.02>'
>
> """
> q = Decimal(10) ** -places # 2 places --> '0.01'
> sign, digits, exp = value.quantize(q).as_tuple()
> result = []
> digits = map(str, digits)
> build, next = result.append, digits.pop
> if sign:
> build(trailneg)
> for i in range(places):
> build(next() if digits else '0')
> build(dp)
> if not digits:
> build('0')
> i = 0
> while digits:
> build(next())
> i += 1
> if i == 3 and digits:
> i = 0
> build(sep)
> build(curr)
> build(neg if sign else pos)
> return ''.join(reversed(result))
Sorry, the last one should be:
     def moneyfmt(value, places=2, curr='', sep=',', dp='.',
              pos='', neg='-', trailneg=''):
         """Convert Decimal to a money formatted string.
         places:  required number of places after the decimal point
         curr:    optional currency symbol before the sign (may be blank)
         sep:     optional grouping separator (comma, period, space, or 
blank)
         dp:      decimal point indicator (comma or period)
                  only specify as blank when places is zero
         pos:     optional sign for positive numbers: '+', space or blank
         neg:     optional sign for negative numbers: '-', '(', space or 
blank
         trailneg:optional trailing minus indicator:  '-', ')', space or 
blank
         >>> d = Decimal('-1234567.8901')
         >>> moneyfmt(d, curr='$')
         '-$1,234,567.89'
         >>> moneyfmt(d, places=0, sep='.', dp='', neg='', trailneg='-')
         '1.234.568-'
         >>> moneyfmt(d, curr='$', neg='(', trailneg=')')
         '($1,234,567.89)'
         >>> moneyfmt(Decimal(123456789), sep=' ')
         '123 456 789.00'
         >>> moneyfmt(Decimal('-0.02'), neg='<', trailneg='>')
         '<0.02>'
         """
         q = Decimal(10) ** -places      # 2 places --> '0.01'
         sign, digits, exp = value.quantize(q).as_tuple()
         result = []
         digits = map(str, digits)
         build, next = result.append, digits.pop
         if sign:
             build(trailneg)
         for i in range(places):
             build(next() if digits else '0')
         build(dp)
         if not digits:
             build('0')
         i = 0
         while digits:
             build(next())
             i += 1
             if i == 3 and digits:
                 i = 0
                 build(sep)
         build(curr)
         build(neg if sign else pos)
         return ''.join(reversed(result))
-- 
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
No comments:
Post a Comment