等号前后加空格

今天有点闲时间,打算调整一下我的vim,前两天写python代码,原来的设置只能支持单个的+-*/=的前后加空格,可是碰到 += -=之类的要手动删空格,无法忍受,现调整如下,而且加上了逗号自动添加一个空格的映射,这下好多了

let g:equ=1
"设置= + - * 前后自动空格
"逗号后面自动添加空格
if exists("g:equ")
:inoremap = <c-r>=EqualSign('=')<CR>
:inoremap + <c-r>=EqualSign('+')<CR>
:inoremap - <c-r>=EqualSign('-')<CR>
:inoremap * <c-r>=EqualSign('*')<CR>
:inoremap / <c-r>=EqualSign('/')<CR>
:inoremap , ,<space>
endif

function! EqualSign(char)
if getline('.')[col('.') - 3] =~ "[\*-=+\/]"
return "\<ESC>xa".a:char."\<SPACE>"
else
return "\<SPACE>".a:char."\<SPACE>\<ESC>a"
endif
endf
上面的脚本有个问题,就是在函数里默认参数还是会出现在等号两边出现空格,修改一下

let g:equ=1
"设置= + - * 前后自动空格
"蛇者 ,后面自动添加空格
if exists("g:equ")
:inoremap = <c-r>=EqualSign('=')<CR>
:inoremap + <c-r>=EqualSign('+')<CR>
:inoremap - <c-r>=EqualSign('-')<CR>
:inoremap * <c-r>=EqualSign('*')<CR>
:inoremap / <c-r>=EqualSign('/')<CR>
:inoremap > <c-r>=EqualSign('>')<CR>
:inoremap < <c-r>=EqualSign('<')<CR>
:inoremap , ,<space>
endif

function! EqualSign(char)
if a:char  =~ '='  && getline('.') =~ ".*("
return a:char
endif 
let ex1 = getline('.')[col('.') - 3]
let ex2 = getline('.')[col('.') - 2]

if ex1 =~ "[-=+><>\/\*]"
if ex2 !~ "\s"
return "\<ESC>i".a:char."\<SPACE>"
else
return "\<ESC>xa".a:char."\<SPACE>"
endif 
else
if ex2 !~ "\s"
return "\<SPACE>".a:char."\<SPACE>\<ESC>a"
else
return a:char."\<SPACE>\<ESC>a"
endif 
endif
endf

posted @ 2012-03-22 17:03  smallest  阅读(3289)  评论(0)    收藏  举报