世界上只有三种程序员,一种是使用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方式安装。
2 | sudo apt-get install ctags |
然后在代码中使用“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函数自动补全的设置。
04 | set guifont=Monaco:h10 " 字体 && 字号 |
05 | set expandtab " 设置tab键换空格 |
06 | set tabstop=4 " 设置tab键的宽度 |
07 | set shiftwidth=4 " 换行时行间交错使用4个空格 |
09 | set backspace=2 " 设置退格键可用 |
10 | set cindent shiftwidth=4 " 自动缩进4空格 |
11 | set smartindent " 智能自动缩进 |
14 | "set showmatch " 显示括号配对情况 |
16 | set ruler " 右下角显示光标位置的状态行 |
17 | set incsearch " 查找book时,当输入/b时会自动找到 |
18 | set hlsearch " 开启高亮显示结果 |
19 | set incsearch " 开启实时搜索功能 |
20 | set nowrapscan " 搜索到文件两端时不重新搜索 |
21 | set nocompatible " 关闭兼容模式 |
23 | "set cursorline " 突出显示当前行 |
24 | set hidden " 允许在有未保存的修改时切换缓冲区 |
27 | syntax enable " 打开语法高亮 |
29 | filetype indent on " 针对不同的文件类型采用不同的缩进格式 |
30 | filetype plugin on " 针对不同的文件类型加载对应的插件 |
31 | filetype plugin indent on " 启用自动补全 |
33 | set writebackup " 设置无备份文件 |
35 | set autochdir " 设定文件浏览器目录为当前目录 |
37 | set foldmethod=syntax " 选择代码折叠类型 |
38 | set foldlevel=100 " 禁止自动折叠 |
40 | set laststatus=2 " 开启状态栏信息 |
41 | set cmdheight=2 " 命令行的高度,默认为1,这里设为2 |
44 | au BufRead,BufNewFile *.asm,*.c,*.cpp,*.java,*.cs,*.sh,*.lua,*.pl,*.pm,*.py,*.rb,*.erb,*.hs,*.vim 2match Underlined /.\%81v/ |
50 | set fileencodings=utf-8,gbk,cp936,latin-1 |
52 | source $VIMRUNTIME/delmenu.vim |
53 | source $VIMRUNTIME/menu.vim |
55 | language messages zh_CN.utf-8 |
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 " 阻止把 |
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 |