VIM实现自动添加新行
emacs在编辑代码时,有个功能,在输入{};时可以自动追加新的一行。减少敲回车的次数。将下面的代码加入VIM的配置文件后,可以在编辑c,cpp,h后缀的文件时,也同样有这个功能。
function Find_for()
if search('^\s*[f]or', 'b', line('.'))
return ""
endif
if search('\"', 'b', line('.'))
if searchpair('\"', '', '\"', 'b', '', line('.'))
return "\r"
else
return ""
endif
endif
if search('\''', 'b', line('.'))
if searchpair('\''', ';', '\''', 'b', '', line('.'))
return "\r"
else
return ""
endif
endif
return "\r"
endfunction
autocmd BufReadPost *.{c,cpp,h} inoremap <expr><buffer> { '{'."\r"
autocmd BufReadPost *.{c,cpp,h} inoremap <expr><buffer> } '}'."\r"
autocmd BufReadPost *.{c,cpp,h} inoremap <expr><buffer> ; ';'.Find_for()
缺点,对于“和‘的匹配没有重复,嵌套检测的功能。在某些情况下,会导致自动回车。
如:
std::cout << "hello world" << "second ;
有兴趣的话,可以再改进一下。