Vim的snipMate插件 

介绍 

终于发现了一个插件,对于Vim下代码块的自动补全支持的很好。给大家推荐snipMate。 

snipMate可以帮助您在vim上实现类似Textmate的功能,自动代码块的能力非常强大,而且代码块是可定制的。我们只需编辑~/.vim/snippets/目录下的*.snippets文件就可以根据自己的要求自动产生代码。 

使用 

下载​​snipMate​​,解压到你的Vim目录。 

完成之后,新建一个测试文件snipMateTest.php准备测试 

vim snipMateTest.php 

然后按照下面的方式开始测试snipMate: 

输入for,再按tab键 

输入foreach,再按tab键 

输入class,再按tab键 

输入fun,再按tab键 

效果如图 

 

​http://www.ccvita.com/481.html​​ 

snipMate插件php自动补全配置文件: 



snippet php
<?php
1}
snippet ec
"${1:string}"${2};
snippet inc
'${1:file}';${2}
snippet inc1
'${1:file}';${2}
snippet req
'${1:file}';${2}
snippet req1
'${1:file}';${2}
# $GLOBALS['...']
snippet globals
'${1:variable}']${2: = }${3:something}${4:;}${5}
snippet $_ COOKIE['...']
'${1:variable}']${2}
snippet $_ ENV['...']
'${1:variable}']${2}
snippet $_ FILES['...']
'${1:variable}']${2}
snippet $_ Get['...']
'${1:variable}']${2}
snippet $_ POST['...']
'${1:variable}']${2}
snippet $_ REQUEST['...']
'${1:variable}']${2}
snippet $_ SERVER['...']
'${1:variable}']${2}
snippet $_ SESSION['...']
'${1:variable}']${2}
# Start Docblock
snippet /*
/**
* ${1}
**/
# Class - post doc
snippet doc_cp
/**
* ${1:undocumented class}
*
* @package ${2:default}
* @author ${3:`g:snips_author`}
**/${4}
# Class Variable - post doc
snippet doc_vp
/**
* ${1:undocumented class variable}
*
* @var ${2:string}
**/${3}
# Class Variable
snippet doc_v
/**
* ${3:undocumented class variable}
*
* @var ${4:string}
**/
1:var} $${2};${5}
# Class
snippet doc_c
/**
* ${3:undocumented class}
*
* @packaged ${4:default}
* @author ${5:`g:snips_author`}
**/
1:}class ${2:}
6}
// END $1class $2
# Constant Definition - post doc
snippet doc_dp
/**
* ${1:undocumented constant}
**/${2}
# Constant Definition
snippet doc_d
/**
* ${3:undocumented constant}
**/
1}, ${2});${4}
# Function - post doc
snippet doc_fp
/**
* ${1:undocumented function}
*
* @return ${2:void}
* @author ${3:`g:snips_author`}
**/${4}
# Function signature
snippet doc_s
/**
* ${4:undocumented function}
*
* @return ${5:void}
* @author ${6:`g:snips_author`}
**/
1}function ${2}(${3});${7}
# Function
snippet doc_f
/**
* ${4:undocumented function}
*
* @return ${5:void}
* @author ${6:`g:snips_author`}
**/
1}function ${2}(${3})
7}
}
# Header
snippet doc_h
/**
* ${1}
*
* @author ${2:`g:snips_author`}
* @version ${3:$Id$}
* @copyright ${4:$2}, `strftime('%d %B, %Y')`
* @package ${5:default}
**/

/**
* Define DocBlock
*//
# Interface
snippet doc_i
/**
* ${2:undocumented class}
*
* @package ${3:default}
* @author ${4:`g:snips_author`}
**/
interface ${1:}
5}
// END interface $1
# class
snippet class
/**
* ${1}
**/
class ${2:ClassName}
{
3}
4:__construct}(${5:argument})
{
6:// code...}
}
}
# define(...)
snippet def
'${1}'${2});${3}
# defined(...)
snippet def?
1}defined('${2}')${3}
snippet wh
while (${1:/* condition */}) {
2:// code...}
}
# do ... while
snippet do
do
2:// code... }
while (${1:/* condition */});
snippet if
if (${1:/* condition */}) {
2:// code...}
}
snippet ife
if (${1:/* condition */}) {
2:// code...}
else
3:// code...}
}
4}
snippet else
else
1:// code...}
}
snippet elseif
1:/* condition */}) {
2:// code...}
}
# Tertiary conditional
snippet t
1:retVal} = (${2:condition}) ? ${3:a} : ${4:b};${5}
snippet switch
switch ($${1:variable}) {
case '${2:value}':
3:// code...}
break;
5}
default:
4:// code...}
break;
}
snippet case
case '${1:value}':
2:// code...}
break;${3}
snippet for
for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {
4: // code...}
}
snippet foreach
1:variable} as $${2:key}) {
3:// code...}
}
snippet fun
1:public }function ${2:FunctionName}(${3})
{
4:// code...}
}
# $... = array (...)
snippet array
1:arrayName} = array('${2}' => ${3});${4}