炫日分享了一个 自 动补全成对的括号 的脚本,【注】:原文代码中引号被转义成了中文引号,下面是修正后的脚本。
inoremap ( ()i
inoremap )=ClosePair(')')
inoremap { {}i
inoremap }=ClosePair('}')
inoremap [ []i
inoremap ]=ClosePair(']')
inoremap < <>i
inoremap >=ClosePair('>')
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\"
else
return a:char
endif
endf
经此启发我增加了对括号和引号更智能的补全支持, 不过中文全角的括号和引号目前无法通过映射来实现, 对于跨行、转义的符号对的支持也不佳,如果有好的实现也请告知 : )
- OpenPair:
- 如果当前行的括号已经成对匹配,则自动补全右括号
(I)
- 如果左括号比右括号多,则自动补全
I(()
(I()
((I)
(()I
- 如果左括号比右括号少,
I())
原样输出,不自动补全
(I))
同上
()I)
同上
())I
自动补全:左括号较少,且光标之后字符串进行一次递归上面的条件 - ClosePair:
- 如果光标之后是一个右括号,向右移动一列
(I)
((I)
(I))
()I)
- 否则原样输出。
代码见 gist: 449512
更新 (2010/6/24) 最后更新 (2010/7/9)
没有评论:
发表评论