vim 学习记录
目录结构
$ 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函数自动补全
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 学习记录的更多相关文章
- vim学习记录(转)
基本功 Vim有三种模式: 导航(navigation)模式. 这时候,字母就是上下左右键. 输入模式.这时候,你按字母键,才会输入字母. 命令模式.需要先输入":" 冒号,才会进 ...
- vim 学习记录2
当前行进行替换:s/XXX/YYY/gXXX是需要替换的字符串,YYY是替换后的字符串. 全局替换:% s/XXX/YYY/g. 对指定部分进行替换用V进入visual模式,再进行:s/XXX/YYY ...
- 在Ubuntu Server下搭建LAMP环境学习记录
更新于2015/6/16日,因图片地址失效,请在此地址查看:http://note.youdao.com/share/?id=1c249ae6dc6150cbf692adec67b23a33& ...
- vim学习、各类插件配置与安装
vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...
- vim学习、各类插件配置与安装【转】
转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...
- ansible 学习记录
Ansible 的重新学习记录 这里我的Ansible的宿主机是centos 7.2系统,这里我通过yum 安装Ansible 1.配置epel源 sudo yum -y install epel-r ...
- 菜鸟vimer成长记——第0章、我眼中的vim学习
这是一系统总结vim的学习文章,记录我自己学习vim的过程和感悟.与此同时也想分享出来给大家,欢迎大家互相讨论和学习. 在这里假设你们对vim已经有了一些基本的认识或者说已经使用过几个月的vim.该系 ...
- SVN教程 -- 基于自己学习记录
SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控 ...
- Git 教程 -- 基于自己学习记录
Git 教程 -- 基于自己学习记录 1. 引言 由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这. 2. 注册登录 GitHub. 3. 选择一个仓 ...
随机推荐
- JAVA基础知识之IO-File类
File类介绍 File是java.io包下面的一个类,代表与平台无关的文件或者目录.JAVA中,无论文件还是目录,都可以看作File类的一个对象.File类能对文件或目录新建,删除,获取属性等操作, ...
- linux设备驱动编写_tasklet机制
在编写设备驱动时, tasklet 机制是一种比较常见的机制,通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成. 为了最大程度的避免中断处理时间过长而导致中断丢失,有时 ...
- linux系统中如何查看日志 (常用命令2)
cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关 ...
- FileInputstream的available()方法
摘自:http://greemranqq.iteye.com/blog/2051487
- Java之美[从菜鸟到高手演练]之JDK动态代理的实现及原理
Java之美[从菜鸟到高手演练]之JDK动态代理的实现及原理 JDK动态代理的实现及原理 作者:二青 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfg ...
- mfc控件学习
0.所有控件 软件启动自动被选中:属性中的tabstop改为true或者false 1.Button 动态设置button的字:btn.SetWindowTextW(_T("我不是一个按钮 ...
- layoutSubviews,setNeedsDisplay
一 , layoutSubviews何时调用的问题 //layoutSubviews何时调用的问题,这个方法是当你需要在调整subview的大小的时候需要重写(我这个翻译不严谨,以下是原文:You s ...
- Linux 性能监测:介绍
看了某某教程.读了某某手册,按照要求改改某某设置.系统设定.内核参数就认为做到系统优化的想法很傻很天真:)系统优化是一项复杂.繁琐.长期的 工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采 ...
- SetWindowHookEx 做消息响应
HHOOK g_Hook = NULL; LRESULT CALLBACK CallWndProc( _In_ int nCode, _In_ WPARAM wParam, _In_ LPARAM l ...
- 异步设备IO 《windows核心编程》第10章学习
异步IO操作与同步操作区别: 在CreateFile里的FILE_FLAG_OVERLAPPED标志 异步操作函数LPOVERLAPPED参数 接收IO请求完成通知 触发设备内核对象 缺点:同一个设备 ...