mirror of
				https://github.com/amix/vimrc
				synced 2025-10-31 06:33:35 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			347 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			347 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ## Main
 | |
| # main
 | |
| snippet main
 | |
| 	int main(int argc, const char *argv[])
 | |
| 	{
 | |
| 		${0}
 | |
| 		return 0;
 | |
| 	}
 | |
| # main(void)
 | |
| snippet mainn
 | |
| 	int main(void)
 | |
| 	{
 | |
| 		${0}
 | |
| 		return 0;
 | |
| 	}
 | |
| ##
 | |
| ## Preprocessor
 | |
| # #include <...>
 | |
| snippet inc
 | |
| 	#include <${1:stdio}.h>
 | |
| # #include "..."
 | |
| snippet Inc
 | |
| 	#include "${1:`vim_snippets#Filename("$1.h")`}"
 | |
| # ifndef...define...endif
 | |
| snippet ndef
 | |
| 	#ifndef $1
 | |
| 	#define ${1:SYMBOL} ${2:value}
 | |
| 	#endif /* ifndef $1 */
 | |
| # define
 | |
| snippet def
 | |
| 	#define
 | |
| # ifdef...endif
 | |
| snippet ifdef
 | |
| 	#ifdef ${1:FOO}
 | |
| 		${2:#define }
 | |
| 	#endif
 | |
| # if
 | |
| snippet #if
 | |
| 	#if ${1:FOO}
 | |
| 		${0:${VISUAL}}
 | |
| 	#endif
 | |
| # header include guard
 | |
| snippet once
 | |
| 	#ifndef ${1:`toupper(vim_snippets#Filename('$1_H', 'UNTITLED_H'))`}
 | |
| 
 | |
| 	#define $1
 | |
| 
 | |
| 	${0}
 | |
| 
 | |
| 	#endif /* end of include guard: $1 */
 | |
| # Disable C++ name mangling in C headers
 | |
| snippet nocxx
 | |
| 	#ifdef __cplusplus
 | |
| 	extern "C" {
 | |
| 	#endif
 | |
| 
 | |
| 	${0}
 | |
| 
 | |
| 	#ifdef __cplusplus
 | |
| 	} /* extern "C" */
 | |
| 	#endif
 | |
| ##
 | |
| ## Control Statements
 | |
| # if
 | |
| snippet if
 | |
| 	if (${1:true}) {
 | |
| 		${0:${VISUAL}}
 | |
| 	}
 | |
| snippet ife
 | |
| 	if (${1:true}) {
 | |
| 		${2:${VISUAL}}
 | |
| 	} else {
 | |
| 		${0}
 | |
| 	}
 | |
| # else
 | |
| snippet el
 | |
| 	else {
 | |
| 		${0:${VISUAL}}
 | |
| 	}
 | |
| # else if
 | |
| snippet elif
 | |
| 	else if (${1:true}) {
 | |
| 		${0:${VISUAL}}
 | |
| 	}
 | |
| # ifi
 | |
| snippet ifi
 | |
| 	if (${1:true}) ${0};
 | |
| # ternary
 | |
| snippet t
 | |
| 	${1:/* condition */} ? ${2:a} : ${3:b}
 | |
| # switch
 | |
| snippet switch
 | |
| 	switch (${1:/* variable */}) {
 | |
| 		case ${2:/* variable case */}:
 | |
| 			${3}
 | |
| 			${4:break;}${5}
 | |
| 		default:
 | |
| 			${6}
 | |
| 	}
 | |
| # switch without default
 | |
| snippet switchndef
 | |
| 	switch (${1:/* variable */}) {
 | |
| 		case ${2:/* variable case */}:
 | |
| 			${3}
 | |
| 			${4:break;}${5}
 | |
| 	}
 | |
| # case
 | |
| snippet case
 | |
| 	case ${1:/* variable case */}:
 | |
| 		${2}
 | |
| 		${3:break;}
 | |
| snippet ret
 | |
| 	return ${0};
 | |
| ##
 | |
| ## Loops
 | |
| # for
 | |
| snippet for
 | |
| 	for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) {
 | |
| 		${4}
 | |
| 	}
 | |
| # for (custom)
 | |
| snippet forr
 | |
| 	for (int ${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {
 | |
| 		${5}
 | |
| 	}
 | |
| # while
 | |
| snippet wh
 | |
| 	while (${1:/* condition */}) {
 | |
| 		${0:${VISUAL}}
 | |
| 	}
 | |
| # do... while
 | |
| snippet do
 | |
| 	do {
 | |
| 		${0:${VISUAL}}
 | |
| 	} while (${1:/* condition */});
 | |
| ##
 | |
| ## Functions
 | |
| # function definition
 | |
| snippet fun
 | |
| 	${1:void} ${2:function_name}(${3})
 | |
| 	{
 | |
| 		${4}
 | |
| 	}
 | |
| # function definition with zero parameters
 | |
| snippet fun0
 | |
| 	${1:void} ${2:function_name}()
 | |
| 	{
 | |
| 		${3}
 | |
| 	}
 | |
| # function definition with Doxygen documentation
 | |
| snippet dfun0
 | |
| 	/*! \brief ${1:Brief function description here}
 | |
| 	 *
 | |
| 	 *  ${2:Detailed description of the function}
 | |
| 	 *
 | |
| 	 * \return ${3:Return parameter description}
 | |
| 	 */
 | |
| 	${4:void} ${5:function_name}()
 | |
| 	{
 | |
| 		${6}
 | |
| 	}
 | |
| # function definition with one parameter
 | |
| snippet fun1
 | |
| 	${1:void} ${2:function_name}(${3:Type} ${4:Parameter})
 | |
| 	{
 | |
| 		${5}
 | |
| 	}
 | |
| # function definition with one parameter with  Doxygen documentation
 | |
| snippet dfun1
 | |
| 	/*! \brief ${1:Brief function description here}
 | |
| 	 *
 | |
| 	 *  ${2:Detailed description of the function}
 | |
| 	 *
 | |
| 	 * \param $3 ${4:Parameter description}
 | |
| 	 * \return ${5:Return parameter description}
 | |
| 	 */
 | |
| 	${6:void} ${7:function_name}(${8:Type} ${3:Parameter})
 | |
| 	{
 | |
| 		${9}
 | |
| 	}
 | |
| # function definition with two parameters
 | |
| snippet fun2
 | |
| 	${1:void} ${2:function_name}(${3:Type} ${4:Parameter}, ${5:Type} ${6:Parameter})
 | |
| 	{
 | |
| 		${7}
 | |
| 	}
 | |
| # function definition with two parameters with  Doxygen documentation
 | |
| snippet dfun2
 | |
| 	/*! \brief ${1:Brief function description here}
 | |
| 	 *
 | |
| 	 *  ${2:Detailed description of the function}
 | |
| 	 *
 | |
| 	 * \param $3 ${4:Parameter description}
 | |
| 	 * \param $5 ${6:Parameter description}
 | |
| 	 * \return ${7:Return parameter description}
 | |
| 	 */
 | |
| 	${8:void} ${9:function_name}(${10:Type} ${3:Parameter}, ${11:Type} ${5:Parameter})
 | |
| 	{
 | |
| 		${12}
 | |
| 	}
 | |
| # function definition with three parameters
 | |
| snippet fun3
 | |
| 	${1:void} ${2:function_name}(${3:Type} ${4:Parameter}, ${5:Type} ${6:Parameter}, ${7:Type} ${8:Parameter})
 | |
| 	{
 | |
| 		${9}
 | |
| 	}
 | |
| # function definition with three parameters with  Doxygen documentation
 | |
| snippet dfun3
 | |
| 	/*! \brief ${1:Brief function description here}
 | |
| 	 *
 | |
| 	 *  ${2:Detailed description of the function}
 | |
| 	 *
 | |
| 	 * \param $3 ${4:Parameter description}
 | |
| 	 * \param $5 ${6:Parameter description}
 | |
| 	 * \param $7 ${8:Parameter description}
 | |
| 	 * \return ${9:Return parameter description}
 | |
| 	 */
 | |
| 	${10:void} ${11:function_name}(${12:Type} ${3:Parameter}, ${13:Type} ${5:Parameter}, ${14:Type} ${7:Parameter})
 | |
| 	{
 | |
| 		${15}
 | |
| 	}
 | |
| # function declaration
 | |
| snippet fund
 | |
| 	${1:void} ${2:function_name}(${3});
 | |
| ##
 | |
| ## Types
 | |
| # typedef
 | |
| snippet td
 | |
| 	typedef ${1:int} ${2:MyCustomType};
 | |
| # struct
 | |
| snippet st
 | |
| 	/*! \struct $1
 | |
| 	 *  \brief ${3:Brief struct description}
 | |
| 	 *
 | |
| 	 *  ${4:Detailed description}
 | |
| 	 */
 | |
| 	struct ${1:`vim_snippets#Filename('$1_t', 'name')`} {
 | |
| 		${2:Data} /*!< ${4:Description} */
 | |
| 	}${5: /* optional variable list */};
 | |
| # typedef struct
 | |
| snippet tds
 | |
| 	/*! \struct $2
 | |
| 	 *  \brief ${5:Brief struct description}
 | |
| 	 *
 | |
| 	 *  ${6:Detailed description}
 | |
| 	 */
 | |
| 	typedef struct ${2:_$1 }{
 | |
| 		m_${3:Data} /*!< ${4:Description} */
 | |
| 	} ${1:`vim_snippets#Filename('$1_t', 'name')`};
 | |
| 
 | |
| snippet enum
 | |
| 	/*! \enum $1
 | |
| 	 *
 | |
| 	 *  ${2:Detailed description}
 | |
| 	 */
 | |
| 	enum ${1:name} { ${0} };
 | |
| # typedef enum
 | |
| snippet tde
 | |
| 	/*! \enum $2
 | |
| 	 *
 | |
| 	 *  ${4:Detailed description}
 | |
| 	 */
 | |
| 	typedef enum {
 | |
| 		${1:Data} /*!< ${3:Description} */
 | |
| 	} ${2:foo};
 | |
| ##
 | |
| ## Input/Output
 | |
| # printf
 | |
| snippet pr
 | |
| 	printf("${1:%s}\n"${2});
 | |
| # fprintf (again, this isn't as nice as TextMate's version, but it works)
 | |
| snippet fpr
 | |
| 	fprintf(${1:stderr}, "${2:%s}\n"${3});
 | |
| snippet prd
 | |
| 	printf("${1:} = %d\n", $1);
 | |
| snippet prf
 | |
| 	printf("${1:} = %f\n", $1);
 | |
| snippet prx
 | |
| 	printf("${1:} = %${2}\n", $1);
 | |
| # getopt
 | |
| snippet getopt
 | |
| 	int choice;
 | |
| 	while (1)
 | |
| 	{
 | |
| 		static struct option long_options[] =
 | |
| 		{
 | |
| 			/* Use flags like so:
 | |
| 			{"verbose",	no_argument,	&verbose_flag, 'V'}*/
 | |
| 			/* Argument styles: no_argument, required_argument, optional_argument */
 | |
| 			{"version", no_argument,	0,	'v'},
 | |
| 			{"help",	no_argument,	0,	'h'},
 | |
| 			${1}
 | |
| 			{0,0,0,0}
 | |
| 		};
 | |
| 
 | |
| 		int option_index = 0;
 | |
| 
 | |
| 		/* Argument parameters:
 | |
| 			no_argument: " "
 | |
| 			required_argument: ":"
 | |
| 			optional_argument: "::" */
 | |
| 
 | |
| 		choice = getopt_long( argc, argv, "vh",
 | |
| 					long_options, &option_index);
 | |
| 
 | |
| 		if (choice == -1)
 | |
| 			break;
 | |
| 
 | |
| 		switch( choice )
 | |
| 		{
 | |
| 			case 'v':
 | |
| 				${2}
 | |
| 				break;
 | |
| 
 | |
| 			case 'h':
 | |
| 				${3}
 | |
| 				break;
 | |
| 
 | |
| 			case '?':
 | |
| 				/* getopt_long will have already printed an error */
 | |
| 				break;
 | |
| 
 | |
| 			default:
 | |
| 				/* Not sure how to get here... */
 | |
| 				return EXIT_FAILURE;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/* Deal with non-option arguments here */
 | |
| 	if ( optind < argc )
 | |
| 	{
 | |
| 		while ( optind < argc )
 | |
| 		{
 | |
| 			${0}
 | |
| 		}
 | |
| 	}
 | |
| ##
 | |
| # TODO section
 | |
| snippet todo
 | |
| 	/*! TODO: ${1:Todo description here}
 | |
| 	 *  \todo $1
 | |
| 	 */
 | |
| ## Miscellaneous
 | |
| # This is kind of convenient
 | |
| snippet .
 | |
| 	[${1}]
 | 
