鸣谢

当前位置:web集结号>>互联网随笔>> vim 用AutoComplPop实现代码自动提示

vim 用AutoComplPop实现代码自动提示

作者:david 发布时间:2012-11-19 14:30:08 浏览量:1754

首先需要完成代码提示,以前写过一遍文章,点击这里进行配置

然后,点击下面网址,进去下载autocomplpop插件

http://www.vim.org/scripts/script.php?script_id=1879

下载的是一个zip文件,解压后会有三个文件夹,分别是autoload,doc,plugin。到Vim的根目录下,找到名字

和这三个一样的文件夹。不同系统目录位置不同。我的fedora是/usr/share/vim/vimfiles

按照文件夹对应的把里面的acp.vim和其他的什么文件都copy过去。然后重启Vim。这时候可能会有错误提:

       Error detected while processing /home/carlos/.vim/plugin/acp.vim:
       line 13:
       ***** L9 library must be installed! *****    

这是插件放出的一个错误提示,查看plugin里的acp.vim可以看到。是缺少L9 library库。这个也是需要下载的。地址在下面

http://www.vim.org/scripts/script.php?script_id=3252

下载下来,它也是一个插件形式,以同样的方式copy到Vim目录下。

安装完后就可以了。

再就是这个插件默认是没有设置php自动补全的,可以设置一个PHP函数字典,让其根据字典的内容进行自动

补全。

这个是一个PHP字典:
编辑配置文件.vimrc,在文件后面加上下面的代码
au FileType php setlocal dict+=/etc/vim/php_funclist.txt
后面跟着的是字典的目录地址,根据自己的需求存放在一个地方就好。我是放到了/etc/vim/目录下。
php_funclist下载:funclist.txt

再附加一些自动补全配置(加入到vimrc中):

php 中 一般是会在 "$", "->", "::" 后需要出现自动补全,在 .vimrc 中加入以下代码:

if !exists('g:AutoComplPop_Behavior')
    let g:AutoComplPop_Behavior = {}
    let g:AutoComplPop_Behavior['php'] = []
    call add(g:AutoComplPop_Behavior['php'], {
               'command'   : "<C-x><C-o>", 
               'pattern'   : printf('(->|::|$)k{%d,}$', 0),
               'repeat'    : 0,
            })
endif

在 Vim 中实现括号自动补全:

:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>
          
function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "<Right>"
else
return a:char
endif
endfunction

这样,写代码的时候不再担心会丢掉右边的括号了,尤其是函数嵌套的时候。

   本站申明:本文为【web集结号】会员原创或网络转载,希望大家踊跃转载,转载必须注明文章来源和地址。
   本文链接: http://www.i5good.com/20121119139.html
   寻求合作:本站只接受技术类网站友情链接,有执着于技术和梦想的朋友,请点击下面的友情链接申请!

  •  
  • 晓狼:
    发表于 2012-12-21 14:43:40 点击这里给我发消息

           很强大,谢谢分享

    文章评论

    • 昵称:
    • QQ:
    • 网站:
    • 验证码: CAPTCHA
    •