参考: http://www-vlsi.stanford.edu/~jsolomon/vim/
http://vimcdoc.sourceforge.net/doc/syntax.html#:highlight-link
http://blog.youkuaiyun.com/wooin/article/details/1858917
"====================================================================================
“ bash script to update cscope.out & tags
#update ctags & cscopefind $pwd -name "*.h" -o -name "*.cpp" -o -name "*.c" > cscope.files
cscope -bkq -i cscope.files
ctags -R
"====================================================================================
"my .vimrc
set nocompatible " 关闭 vi 兼容模式colorscheme desert " 设定配色方案
color myscheme
filetype plugin indent on " 开启插件
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set tabstop=4 " 设定 tab 长度为 4
"set expandtab
set autochdir " 自动切换当前目录为当前文件所在的目录
set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍大小写敏感
set nowrapscan " 禁止在搜索到文件两端时重新搜索
set incsearch " 输入搜索内容时就显示搜索结果
set hlsearch " 搜索时高亮显示被找到的文本
set noerrorbells " 关闭错误信息响铃
set novisualbell " 关闭使用可视响铃代替呼叫
set t_vb= " 置空错误铃声的终端代码
"set showmatch " 插入括号时,短暂地跳转到匹配的对应括号
"set matchtime=1 " 短暂跳转到匹配括号的时间
"set nowrap " 不自动换行
set magic " 显示括号配对情况
set hidden " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
"set smartindent " 开启新行时使用智能自动缩进
set backspace=indent,eol,start "不设定在插入状态无法用退格键和 Delete键删除回车符
set cmdheight=1 " 设定命令行的行数为 1
set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set foldenable " 开始折叠
set foldmethod=syntax " 设置语法折叠
set foldcolumn=0 " 设置折叠区域的宽度
setlocal foldlevel=1 " 设置折叠层数为
"编码格式
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
" 显示Tab符
set listchars=tab:\|\ ,trail:.,extends:>,precedes:<
set list
"设置代码折叠方式为 手工 indent
set foldmethod=indent
""设置代码块折叠后显示的行数
set foldexpr=1
" 设定doc文档目录
let helptags=$VIMFILES.'/doc'
set helplang=cn
"set nobomb
set whichwrap+=<,>,h,l
set shell=/bin/bash
set fenc=utf-8 "设定默认解码
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
set writebackup
""把undo历史保存到文件里,这样undo不会因为vim的关闭而丢失
set undofile
set undodir=~/.tmp/undo
""每次编辑文件都会在指定文件夹里留个备份
set backup
set backupdir=~/.tmp/backup
" 我的状态行显示的内容(包括文件类型和解码)
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
"set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%]
" 总是显示状态行
set laststatus=2
" 在编辑过程中,在右下角显示光标位置的状态行
set ruler
" Turn off incremental searching for files over 10,000,000 bytes. It's too slow.
function! IncSearch()
if line2byte(line("$")) < 10000000
set incsearch
else
set noincsearch
endif
endfunction
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
"========================================================
" taglist settings
"========================================================
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
"========================================================
" winmanager settings
"========================================================
"let g:winManagerWindowLayout='FileExplorer|TagList'
"nmap wm :WMToggle<cr>
"========================================================
" vim7 支持标签
"========================================================
"设置标签页最大个数
set tabpagemax=20
"总是显示tab栏
set showtabline=2
"========================================================
" new-omni-completion settings
"========================================================
set completeopt=longest,menu
"========================================================
" supertab settings
"========================================================
"let g:SuperTabDefaultCompletionType="<C-X><C-O>"
" 设置按下<Tab>后默认的补全方式, 默认是<C-P>,
" 现在改为<C-X><C-O>. 关于<C-P>的补全方式,
" 还有其他的补全方式, 你可以看看下面的一些帮助:
" :help ins-completion
" :help compl-omni
"let g:SuperTabRetainCompletionType=2
" 0 - 不记录上次的补全方式
" 1 - 记住上次的补全方式,直到用其他的补全命令改变它
" 2 - 记住上次的补全方式,直到按ESC退出插入模式为止
"========================================================
" pathogen
"========================================================
"call pathogen#runtime_append_all_bundles()
"========================================================
" cscope settings
"========================================================
:set cscopequickfix=s-,c-,d-,i-,t-,e-
if has("cscope")
set csprg=/usr/local/bin/cscope
set csto=1
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
endif
set csverb
endif
nmap <C-F>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-F>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-F>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-F>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-F>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-F>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-F>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-F>d :cs find d <C-R>=expand("<cword>")<CR><CR>
"========================================================
" set tags
"========================================================
if filereadable("tags")
:set tags=$pwd/tags
endif
syntax on " 自动语法高亮
syntax enable
"================================================================================================
"=========================
"c.vim
"========================================================"highlight Functions
"========================================================
syn match cFuntions display "[a-zA-Z_]\{-1,}\s\{-0,}(\{1}"ms=s,me=e-1
hi link cFuntions Function
"========================================================
" Highlight All Math Operator
"========================================================
" C math operators
syn match cMathOperator display "[-+\*\%=]"
" C pointer operators
syn match cPointerOperator display "->\|\."
" C logical operators - boolean results
syn match cLogicalOperator display "[!<>]=\="
syn match cLogicalOperator display "=="
" C bit operators
syn match cBinaryOperator display "\(&\||\|\^\|<<\|>>\)=\="
syn match cBinaryOperator display "\~"
syn match cBinaryOperatorError display "\~="
" More C logical operators - highlight in preference to binary
syn match cLogicalOperator display "&&\|||"
syn match cLogicalOperatorError display "\(&&\|||\)="
hi link cMathOperator Operator
hi link cPointerOperator Operator
hi link cLogicalOperator Operator
hi link cBinaryOperator Operator
hi link cBinaryOperatorError Operator
hi link cLogicalOperator Operator
hi link cLogicalOperatorError Operator
"========================================================
" My Own DataType
"========================================================
"syn keyword cType My_Type_1 My_Type_2 My_Type_3
"========================================================
" myscheme.vim
"========================================================
" Vim color file
" grey on black
"
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
"colorscheme default
let g:colors_name = "myscheme"
" hardcoded colors :
" GUI Comment : #80a0ff = Light blue
" ============
" GUI
" ============
highlight Normal guifg=Grey80| guibg=Black
highlight Search guifg=Black| guibg=Red| gui=bold
highlight Visual guifg=#404040| | | gui=bold
highlight Cursor guifg=Black| guibg=Green|gui=bold
highlight Special guifg=Orange
highlight StatusLine guifg=blue|| guibg=white
" ============
" Console
" ============
highlight Normal ctermfg=LightGrey| ctermbg=Black
highlight Search ctermfg=Black| ctermbg=Red|cterm=NONE
highlight Visual| | | | | cterm=reverse
highlight Cursor ctermfg=Black| ctermbg=Green| cterm=bold
highlight Special ctermfg=Brown
highlight StatusLine ctermfg=blue| ctermbg=white
"========================================================
" syntax
"========================================================
hi |Comment guifg=#80a0ff | ctermfg=LightGrey | " 任何注释
hi |Constant guifg=#d1117f | ctermfg=LightCyan| | " 任何常数
hi |String guifg=#d1117f | ctermfg=LightMagenta| " 字符串常数
hi |Character guifg=#d1117f | ctermfg=LightMagenta| " 字符常数: 'c'、'\n'
hi |Number guifg=#d1117f | ctermfg=LightCyan| | " 数值常数: 234、0xff
hi |Boolean guifg=#d1117f | ctermfg=LightCyan| | " 布尔型常数: TRUE、false
hi |Float guifg=#d1117f | ctermfg=LightCyan| | " 浮点常数: 2.3e10
hi |Identifier guifg=#d1117f | ctermfg=DarkCyan | " 任何变量名
hi |Function guifg=#5e45c3 | ctermfg=Blue | " 函数名 (也包括: 类的方法名)
hi |Statement guifg=#d1117f | ctermfg=white| | " 任何语句
hi |Conditional guifg=#d1117f | ctermfg=LightGreen |" if、then、else、endif、switch 等
hi |Repeat guifg=#d1117f | ctermfg=LightGreen |" for、do、while 等
hi |Label guifg=#d1117f | ctermfg=LightGreen |" case、default 等
hi |Operator guifg=#d1117f | ctermfg=Yellow |".
hi |Keyword guifg=#d1117f | ctermfg=LightGreen |" 其它关键字
hi |Exception guifg=#d1117f | ctermfg=LightGreen |" try、catch、throw
hi |PreProc guifg=#d1117f | ctermfg=DarkRed | " 通用预处理命令
hi |Include guifg=#d1117f | ctermfg=DarkRed | " 预处理命令 #include
hi |Define guifg=#d1117f | ctermfg=DarkRed | " 预处理命令 #define
hi |Macro guifg=#d1117f | ctermfg=DarkRed | " 同 Define
hi |PreCondit guifg=#d1117f | ctermfg=DarkRed | " 预处理命令 #if、#else、#endif 等
hi |Type guifg=#d1117f | ctermfg=DarkGreen | " int、long、char 等
hi |StorageClass guifg=#d1117f | ctermfg=LightGreen |" static、register、volatile 等
hi |Structure guifg=#d1117f | ctermfg=LightGreen |" struct、union、enum 等
hi |Typedef guifg=#d1117f | ctermfg=LightGreen |" typedef 定义