hdqqq

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  35 随笔 :: 0 文章 :: 104 评论 :: 0 Trackbacks
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 ;
     有兴趣的话,可以再改进一下。

posted on 2010-12-07 17:59 hdqqq 阅读(1484) 评论(0)  编辑 收藏 引用 所属分类: 其他开发语言

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理