更新于 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. HashMap原理详解

    HashMap 概述 HashMap 是基于哈希表的 Map 接口的非同步实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.此类不保证映射的顺序,特别是它不保证该顺序恒久不 ...

  2. javascript中set与get方法详解

    其中get与set的使用方法: 1.get与set是方法,因为是方法,所以可以进行判断. 2.get是得到 一般是要返回的   set 是设置 不用返回 3.如果调用对象内部的属性约定的命名方式是_a ...

  3. 编写shell管理脚本(一)

    7.1  查看当前linux系统中能够使用的shell程序的列表[root@localhost ~]# cat /etc/shells/bin/sh/bin/bash/sbin/nologin/bin ...

  4. mvcAPI (入门 3)

    续上 1)无参数Get请求 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...

  5. BZOJ3687:bitset STL

    [bzoj3687][FJ2014集训]简单题 2014年9月14日1,8212 [题目描述]小呆开始研究集合论了,他提出了关于一个数集四个问题:1. 子集的异或和的算术和.2. 子集的异或和的异或和 ...

  6. BZOJ 2661 连连看(费用流)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2661 题意:给出一个区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y) ...

  7. php文本里 php和html代码谁先执行谁啊

    php文本里 php和html代码谁先执行谁啊 比如php里包含一个html文本,然后html代码里又包含了一个php文本,是按照谁先包含谁被服务器执行吗,即先执行php ,再执行里面的html,然后 ...

  8. 0(Mark)(随时添加) ubuntu的一些 终端 命令整理

    MARK 1 查看cpu信息cat /proc/cpiinfo 2 查看ubuntu版本:cat /etc/issue 3 查看系统是32位还是64位方法1:#查看long的位数,返回32或64 ge ...

  9. Zeller公式推导及C#代码示例(待完善)

    Zeller公式用于计算给定日期是星期几. 该方法可以用数论知识进行证明. 假设给定日期Date为Year-Month-Day,求解该日期是星期几的问题实际上就是以之前某个确定星期几的日期作为参考点, ...

  10. 概念学习(Concept Learning)

    从特殊的训练样例中归纳出一般函数是机器学习的核心问题.一般函数是对理想目标函数的函数逼近(function approximation).简而言之,从特殊到普通.与此对应的是演绎推理(deductiv ...