⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c.vim

📁 MSYS在windows下模拟了一个类unix的终端
💻 VIM
字号:
" Vim syntax file" Language:	C" Maintainer:	Bram Moolenaar <Bram@vim.org>" Last Change:	2001 May 17" For version 5.x: Clear all syntax items" For version 6.x: Quit when a syntax file was already loadedif version < 600  syntax clearelseif exists("b:current_syntax")  finishendif" A bunch of useful C keywordssyn keyword	cStatement	goto break return continue asmsyn keyword	cLabel		case defaultsyn keyword	cConditional	if else switchsyn keyword	cRepeat		while for dosyn keyword	cTodo		contained TODO FIXME XXX" cCommentGroup allows adding matches for special things in commentssyn cluster	cCommentGroup	contains=cTodo" String and Character constants" Highlight special characters (those which have a backslash) differentlysyn match	cSpecial	display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"if !exists("c_no_utf")  syn match	cSpecial	display contained "\\\(u\x\{4}\|U\x\{8}\)"endifif exists("c_no_cformat")  syn region	cString		start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial  " cCppString: same as cString, but ends at end of line  syn region	cCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecialelse  syn match	cFormat		display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained  syn match	cFormat		display "%%" contained  syn region	cString		start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat  " cCppString: same as cString, but ends at end of line  syn region	cCppString	start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormatendifsyn match	cCharacter	"L\='[^\\]'"syn match	cCharacter	"L'[^']*'" contains=cSpecialif exists("c_gnu")  syn match	cSpecialError	"L\='\\[^'\"?\\abefnrtv]'"  syn match	cSpecialCharacter "L\='\\['\"?\\abefnrtv]'"else  syn match	cSpecialError	"L\='\\[^'\"?\\abfnrtv]'"  syn match	cSpecialCharacter "L\='\\['\"?\\abfnrtv]'"endifsyn match	cSpecialCharacter display "L\='\\\o\{1,3}'"syn match	cSpecialCharacter display "'\\x\x\{1,2}'"syn match	cSpecialCharacter display "L'\\x\x\+'""when wanted, highlight trailing white spaceif exists("c_space_errors")  if !exists("c_no_trail_space_error")    syn match	cSpaceError	display excludenl "\s\+$"  endif  if !exists("c_no_tab_space_error")    syn match	cSpaceError	display " \+\t"me=e-1  endifendif"catch errors caused by wrong parenthesis and bracketssyn cluster	cParenGroup	contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersComif exists("c_no_bracket_error")  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString  " cCppParen: same as cParen but ends at end-of-line; used in cDefine  syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString  syn match	cParenError	display ")"  syn match	cErrInParen	display contained "[{}]"else  syn region	cParen		transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString  " cCppParen: same as cParen but ends at end-of-line; used in cDefine  syn region	cCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString  syn match	cParenError	display "[\])]"  syn match	cErrInParen	display contained "[\]{}]"  syn region	cBracket	transparent start='\[' end=']' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString  " cCppBracket: same as cParen but ends at end-of-line; used in cDefine  syn region	cCppBracket	transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString  syn match	cErrInBracket	display contained "[);{}]"endif"integer number, or floating point number without a dot and with "f".syn case ignoresyn match	cNumbers	display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal" Same, but without octal error (for comments)syn match	cNumbersCom	display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalsyn match	cNumber		display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>""hex numbersyn match	cNumber		display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"" Flag the first zero of an octal number as something specialsyn match	cOctal		display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZerosyn match	cOctalZero	display contained "\<0"syn match	cFloat		display contained "\d\+f""floating point number, with dot, optional exponentsyn match	cFloat		display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=""floating point number, starting with a dot, optional exponentsyn match	cFloat		display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>""floating point number, without dot, with exponentsyn match	cFloat		display contained "\d\+e[-+]\=\d\+[fl]\=\>"" flag an octal number with wrong digitssyn match	cOctalError	display contained "0\o*[89]\d*"syn case matchif exists("c_comment_strings")  " A comment can contain cString, cCharacter and cNumber.  " But a "*/" inside a cString in a cComment DOES end the comment!  So we  " need to use a special type of cString: cCommentString, which also ends on  " "*/", and sees a "*" at the start of the line as comment again.  " Unfortunately this doesn't very well work for // type of comments :-(  syntax match	cCommentSkip	contained "^\s*\*\($\|\s\+\)"  syntax region cCommentString	contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip  syntax region cComment2String	contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial  syntax region  cCommentL	start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError  syntax region cComment	matchgroup=cCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceErrorelse  syn region	cCommentL	start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError  syn region	cComment	matchgroup=cCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceErrorendif" keep a // comment separately, it terminates a preproc. conditionalsyntax match	cCommentError	display "\*/"syntax match	cCommentStartError display "/\*"me=e-1 containedsyn keyword	cOperator	sizeofif exists("c_gnu")  syn keyword	cOperator	typeof __real__ __imag__endifsyn keyword	cType		int long short char voidsyn keyword	cType		signed unsigned float doubleif !exists("c_no_ansi") || exists("c_ansi_typedefs")  syn keyword   cType		size_t wchar_t ptrdiff_t sig_atomic_t fpos_t  syn keyword   cType		clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_tendifif exists("c_gnu")  syn keyword	cType		__label__ __complex__endifsyn keyword	cStructure	struct union enum typedefsyn keyword	cStorageClass	static register auto volatile extern constif exists("c_gnu")  syn keyword	cStorageClass	inline __attribute__endifif !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")  if exists("c_gnu")    syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__  endif  syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__  syn keyword cConstant __STDC_VERSION__  syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX  syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX  syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN  syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX  syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN  syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX  syn keyword cConstant FLT_RADIX FLT_ROUNDS  syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON  syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON  syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON  syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP  syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP  syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP  syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP  syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP  syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP  syn keyword cConstant HUGE_VAL EDOM ERANGE CLOCKS_PER_SEC NULL  syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY  syn keyword cConstant LC_NUMERIC LC_TIME  syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN  syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM  " Add POSIX signals as well...  syn keyword cConstant SIGQUIT SIGTRAP SIGKILL SIGUSR1 SIGUSR2 SIGPIPE  syn keyword cConstant SIGALRM SIGCHLD SIGCONT SIGSTOP SIGTSTP SIGTTIN SIGTTOU  syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF  syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam  syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET  syn keyword cConstant TMP_MAX stderr stdin stdout  syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX  " math.h  syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4  syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2endifsyn region	cPreCondit	start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceErrorsyn match	cPreCondit	display "^\s*#\s*\(else\|endif\)\>"if !exists("c_no_if0")  syn region	cCppOut		start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=cCppOut2  syn region	cCppOut2	contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip  syn region	cCppSkip	contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=cSpaceError,cCppSkipendifsyn region	cIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+syn match	cIncluded	display contained "<[^>]*>"syn match	cInclude	display "^\s*#\s*include\>\s*["<]" contains=cIncluded"syn match cLineSkip	"\\$"syn cluster	cPreProcGroup	contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMultisyn region	cDefine		start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroupsyn region	cPreProc	start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup" Highlight User Labelssyn cluster	cMultiGroup	contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppStringsyn region	cMulti		transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'syn cluster	cLabelGroup	contains=cUserLabelsyn match	cUserCont	display "^\s*\I\i*\s*:$" contains=@cLabelGroupsyn match	cUserCont	display ";\s*\I\i*\s*:$" contains=@cLabelGroupsyn match	cUserCont	display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroupsyn match	cUserCont	display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroupsyn match	cUserLabel	display "\I\i*" contained" Avoid recognizing most bitfields as labelssyn match	cBitField	display "^\s*\I\i*\s*:\s*[1-9]"me=e-1syn match	cBitField	display ";\s*\I\i*\s*:\s*[1-9]"me=e-1if exists("c_minlines")  let b:c_minlines = c_minlineselse  if !exists("c_no_if0")    let b:c_minlines = 50	" #if 0 constructs can be long  else    let b:c_minlines = 15	" mostly for () constructs  endifendifexec "syn sync ccomment cComment minlines=" . b:c_minlines" Define the default highlighting." For version 5.7 and earlier: only when not done already" For version 5.8 and later: only when an item doesn't have highlighting yetif version >= 508 || !exists("did_c_syn_inits")  if version < 508    let did_c_syn_inits = 1    command -nargs=+ HiLink hi link <args>  else    command -nargs=+ HiLink hi def link <args>  endif  HiLink cFormat		cSpecial  HiLink cCppString		cString  HiLink cCommentL		cComment  HiLink cCommentStart		cComment  HiLink cLabel			Label  HiLink cUserLabel		Label  HiLink cConditional		Conditional  HiLink cRepeat		Repeat  HiLink cCharacter		Character  HiLink cSpecialCharacter	cSpecial  HiLink cNumber		Number  HiLink cOctal			Number  HiLink cOctalZero		PreProc	 " link this to Error if you want  HiLink cFloat			Float  HiLink cOctalError		cError  HiLink cParenError		cError  HiLink cErrInParen		cError  HiLink cErrInBracket		cError  HiLink cCommentError		cError  HiLink cCommentStartError	cError  HiLink cSpaceError		cError  HiLink cSpecialError		cError  HiLink cOperator		Operator  HiLink cStructure		Structure  HiLink cStorageClass		StorageClass  HiLink cInclude		Include  HiLink cPreProc		PreProc  HiLink cDefine		Macro  HiLink cIncluded		cString  HiLink cError			Error  HiLink cStatement		Statement  HiLink cPreCondit		PreCondit  HiLink cType			Type  HiLink cConstant		Constant  HiLink cCommentString		cString  HiLink cComment2String	cString  HiLink cCommentSkip		cComment  HiLink cString		String  HiLink cComment		Comment  HiLink cSpecial		SpecialChar  HiLink cTodo			Todo  HiLink cCppSkip		cCppOut  HiLink cCppOut2		cCppOut  HiLink cCppOut		Comment  delcommand HiLinkendiflet b:current_syntax = "c"" vim: ts=8

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -