更新于 2013-01-18 05:47:55UEANER

目录结构

$ tree -C ~/.vim | grep -v ".cnx"

|-- dict
| |-- php.dict
|-- syntax
|-- php.vim

1. PHP5.4语法文件

$ cd ~/.vim/syntax/
$ wget https://raw.github.com/ueaner/tools/master/vim/syntax/php.vim

2. PHP函数字典

$ cd ~/.vim/dict/
$ wget http://svn.php.net/viewvc/phpdoc/doc-base/trunk/funclist.txt?view=co -Ophp.dict
或者直接
$ wget http://svn.php.net/viewvc/phpdoc/doc-base/trunk/funclist.txt?view=co -O$HOME/.vim/dict/php.dict

3. 配置vimrc

" PHP 自动完成
" 设置自动完成的监听方式:尾部添加一个字母和清除一个字母
set complete-=k complete+=k
" 设置字典补全文件
set dictionary=$HOME/.vim/dict/php.dict " 使用 tab 键自动完成或尝试自动完成
function! InsertTabWrapper()
let col=col('.')-1
if !col || getline('.')[col-1] !~ '\k'
return "\<TAB>"
else
return "\<C-N>"
endif
endfunction " 重新映射 tab 键到 InsertTabWrapper 函数
inoremap <TAB> <C-R>=InsertTabWrapper()<CR>

注:VIM 内置了补全关键字功能,即补全当前编辑的单个文件和 :tabe / :vs 出来多个文件中已出现的英文字符串, 使用 CTRL+N 快捷键进行补全(可以通过 :help i_CTRL-N 查看帮助文档), 而这里的字典补全 set dictionary 文件同样是使用 CTRL+N 进行补全, (可以通过:help compl-dictionary 查看帮助文档) 所以此时的 TAB 已同时具有了关键字补全和字典补全。 当然 CTRL+P 具有 CTRL+N 同样的功能你也可以将 "\<C-N>" 替换成 "\<C-P>"。

使用

插入模式下按 TAB 键对 PHP 函数进行补全。 另可以使用 <CTRL+X><CTRL+O> (可以CTRL+X+O 三键一起按)快捷键进行函数补全, 包括了 C/java/javascript/lua 等常用语言(调用内置的 Omni completion)。

转载请注明出处。
本文地址:http://blog.aboutc.net/php/4/vim-php-autocomplete-with-tab




Vim开发PHP基础配置


2012-10-23 11:52:44     9个评论     11567次访问


世界上只有三种程序员,一种是使用Vim,一种是使用Emacs,第三种是使用其他编辑器和IDE的。

由此可见Vim在程序猿界的地位之高,这话虽然说的有点过了,但是不得不说Vim用习惯以后确实非常方便,我从去年受某大师的影响开始使用Vim,并且逐渐成为开发PHP的主要编辑器(Linux下我偶尔会使用Komode Edit,Windows下我使用EditPlus和ZendStudio),在项目比较繁忙的时候,使用Linux+Vim写PHP简直是一种享受。下面是我的Vim配置和安装的插件。

1. ctags

下载地址:http://www.vim.org/scripts/script.php?script_id=610

ctags我用于代码间的跳转,例如返回函数定义处(ZendStudio中按着Ctrl+鼠标左键的功能),Debian/Ubuntu用户也可以通过apt方式安装。

1 ##安装
2 sudo apt-get install ctags
3   
4 ##使用
5 ctags -R *

然后在代码中使用“Ctr+[”就可以前往函数定义处(注意一个项目中有同名的方法可能会跳转不准确),使用“Ctrl+T”就可以返回上一个页面。

2. NERDTree

下载地址:http://www.vim.org/scripts/script.php?script_id=1658

NERDTree我现在已经不使用了,不过对于刚接触Vim的人来说NERDTree是一个很好的过渡的插件,很类似大型IDE的项目文件列表功能。

3. PHP函数自动补全

funclist.txt

Vim本身就可以自动补全,按Ctrl+P即可,不过默认只会查找当前标签页中所有打开的文件查找存在的函数、变量和方法等。如果需要使用PHP函数自动补全,则需要单独配置。首先下载上面的函数列表,然后再vimrc加入配置,注意修改funclist.txt的位置路径。

下面是我的Vimrc所有的自定义配置,其中下面的是PHP函数自动补全的设置。

01 "ctags
02 set tags=tags;/
03   
04 set guifont=Monaco:h10       " 字体 && 字号
05 set expandtab                " 设置tab键换空格
06 set tabstop=4                " 设置tab键的宽度
07 set shiftwidth=4             " 换行时行间交错使用4个空格
08 set autoindent               " 自动对齐
09 set backspace=2              " 设置退格键可用
10 set cindent shiftwidth=4     " 自动缩进4空格
11 set smartindent              " 智能自动缩进
12 set ai!                      " 设置自动缩进
13 set nu!                      " 显示行号
14 "set showmatch               " 显示括号配对情况
15 set mouse=a                  " 启用鼠标
16 set ruler                    " 右下角显示光标位置的状态行
17 set incsearch                " 查找book时,当输入/b时会自动找到
18 set hlsearch                 " 开启高亮显示结果
19 set incsearch                " 开启实时搜索功能
20 set nowrapscan               " 搜索到文件两端时不重新搜索
21 set nocompatible             " 关闭兼容模式
22 set vb t_vb=                 " 关闭提示音
23 "set cursorline              " 突出显示当前行
24 set hidden                   " 允许在有未保存的修改时切换缓冲区
25   
26   
27 syntax enable                " 打开语法高亮
28 syntax on                    " 开启文件类型侦测
29 filetype indent on           " 针对不同的文件类型采用不同的缩进格式
30 filetype plugin on           " 针对不同的文件类型加载对应的插件
31 filetype plugin indent on    " 启用自动补全
32   
33 set writebackup              " 设置无备份文件
34 set nobackup
35 set autochdir                " 设定文件浏览器目录为当前目录
36 "set nowrap                  " 设置不自动换行
37 set foldmethod=syntax        " 选择代码折叠类型
38 set foldlevel=100            " 禁止自动折叠
39   
40 set laststatus=2             " 开启状态栏信息
41 set cmdheight=2              " 命令行的高度,默认为1,这里设为2
42   
43 " 每行超过80个的字符用下划线标示
44 au BufRead,BufNewFile *.asm,*.c,*.cpp,*.java,*.cs,*.sh,*.lua,*.pl,*.pm,*.py,*.rb,*.erb,*.hs,*.vim 2match Underlined /.\%81v/
45   
46   
47 " 设置编码
48 set fenc=utf-8
49 set encoding=utf-8
50 set fileencodings=utf-8,gbk,cp936,latin-1
51 " 解决菜单乱码
52 source $VIMRUNTIME/delmenu.vim
53 source $VIMRUNTIME/menu.vim
54 " 解决consle输出乱码
55 language messages zh_CN.utf-8
56   
57   
58 " For Haskell
59 :let hs_highlight_delimiters=1            " 高亮定界符
60 :let hs_highlight_boolean=1               " 把True和False识别为关键字
61 :let hs_highlight_types=1                 " 把基本类型的名字识别为关键字
62 :let hs_highlight_more_types=1            " 把更多常用类型识别为关键字
63 :let hs_highlight_debug=1                 " 高亮调试函数的名字
64 :let hs_allow_hash_operator=1             " 阻止把#高亮为错误
65   
66 "只有在是PHP文件时,才启用PHP补全
67 au FileType php call AddPHPFuncList()
68 function AddPHPFuncList()
69     set dictionary-=/home/feiyan/tools/vim/funclist.txt dictionary+=/home/feiyan/tools/vim/funclist.txt
70     set complete-=k complete+=k
71 endfunction


vim 学习记录的更多相关文章

  1. vim学习记录(转)

    基本功 Vim有三种模式: 导航(navigation)模式. 这时候,字母就是上下左右键. 输入模式.这时候,你按字母键,才会输入字母. 命令模式.需要先输入":" 冒号,才会进 ...

  2. vim 学习记录2

    当前行进行替换:s/XXX/YYY/gXXX是需要替换的字符串,YYY是替换后的字符串. 全局替换:% s/XXX/YYY/g. 对指定部分进行替换用V进入visual模式,再进行:s/XXX/YYY ...

  3. 在Ubuntu Server下搭建LAMP环境学习记录

    更新于2015/6/16日,因图片地址失效,请在此地址查看:http://note.youdao.com/share/?id=1c249ae6dc6150cbf692adec67b23a33& ...

  4. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

  5. vim学习、各类插件配置与安装【转】

    转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...

  6. ansible 学习记录

    Ansible 的重新学习记录 这里我的Ansible的宿主机是centos 7.2系统,这里我通过yum 安装Ansible 1.配置epel源 sudo yum -y install epel-r ...

  7. 菜鸟vimer成长记——第0章、我眼中的vim学习

    这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...

  8. SVN教程 -- 基于自己学习记录

    SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控 ...

  9. Git 教程 -- 基于自己学习记录

    Git 教程 -- 基于自己学习记录 1. 引言 由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这. 2. 注册登录 GitHub. 3. 选择一个仓 ...

随机推荐

  1. jar 文件

    使用类库中的类: 1.当前应用程序所在目录中没有包名的类,直接用. 2.java库. import语句导入. 3.当前目录的子孙目录有报名的类,set classpath,之前有写. 4.扩展ext文 ...

  2. java 导入自定义类

    eclipse导入很容易,昨天上课学了一下用记事本写java,导入自定义类,这就麻烦了. 代码贴一下,方便操作: package tom.jiafei; public class SquareEqua ...

  3. ubuntu配置服务器环境

    今天环境不知道怎么就不能用了.自己新配了一个: 添加源: vi /etc/apt/sources.list 将下面这些源添加进去: deb http://debian.ustc.edu.cn/ubun ...

  4. easyui commbox嵌入一个checkbox的实现

    function InitComBoBox(datagrid, combxid, formid, url, valueField, textField,_prompt) { $(combxid).co ...

  5. Linux内核中的Kconfig、xx.defconfig、xx.config、Makefile

    什么是Kconfig.xx.defconfig.xx.config.Makefile Kconfig: 一个文本形式的文件,其中主要作用是在内核配置时候,作为配置选项. xx.deconfig: Li ...

  6. MSM8909平台 LED背光的控制

    之前齐师兄问我,是不是应该有一个文件记录背光灯的亮度,我说理论上有,但是在哪里我真的还没有见过.只知道在调LCD驱动的时候会调用一个背光控制的函数,传进来一个亮度值就可以配置亮度了,至于这个函数是谁调 ...

  7. block 实现原理详解(一)

    对于大多数人来讲,block内部到底是怎样实现的呢?我们可以借助clang将其编译成为c++的代码,就可以看出,block到底是什么东西, 先来看这样一个问题, <!-- lang: cpp - ...

  8. Create XO Checker Game With Oracle Forms

    Created XO Checker game in Oracle Forms and sharing its FMB (source code) for reference so that you ...

  9. Limiting To Select Only 5 Check Boxes Out Of Ten In Oracle Forms

    Suppose you want to give an option to user to select only 5 check boxes from given any number of che ...

  10. Windows Internals学习笔记(二)系统架构

    参考资料: 1. <Windows Internals> 2. http://bestcbooks.com 3. Windows Drive Kit 4. Microsoft Window ...