ringo9971’s blog

ロボットを作っています. Vimが好きです.

vim-smartchr

[vim] smartchr.vim入れた

上記のサイトを参考にしていた.

しかし, '+'が' + 'や'-'が' - 'になるデメリットの方が大きく感じた

inoremap <expr> / smartchr#one_of('/', ' // ')
inoremap <expr> & smartchr#one_of('&', ' && ')
inoremap <expr> <Bar> smartchr#one_of('<Bar>', ' <Bar><Bar> ')
inoremap <expr> , smartchr#one_of(', ', ',')

inoremap <expr> = search('+\%#', 'bcn')? '<bs> += '
        \ : search('-\%#',  'bcn') ? '<bs> -= '
        \ : search('\*\%#', 'bcn') ? '<bs> *= '
        \ : search('/\%#',  'bcn') ? '<bs> /= '
        \ : search('<\%#',  'bcn') ? '<bs> <= '
        \ : search('>\%#',  'bcn') ? '<bs> >= '
        \ : search('&\%#',  'bcn') ? '<bs> &= '
        \ : search('%\%#',  'bcn') ? '<bs> %= '
        \ : search('^\%#',  'bcn') ? '<bs> ^= '
        \ : search('!\%#',  'bcn') ? '<bs> != '
        \ : search('<bar>\%#', 'bcn') ? '<bs> <bar>= '
        \ : smartchr#one_of(' = ', ' == ', '=')

inoremap <expr> } smartchr#one_of('}', '}<cr>')
inoremap <expr> ; smartchr#one_of(';', ';<cr>')
inoremap <expr> @ search('^\(#.\+\)\?\%#','bcn')? smartchr#one_of('#define', '#include', '@'): '@'

これで'+'は'+'のままで'+='は' += 'のようになり, 幸せになれる.

もっといい書き方が有ればおしえてください.