"判定当前操作系统类型
if has("win32")||has("win95")||has("win64")||has("win16")
let g:iswindows=1
else
let g:iswindows=0
endif
set t_Co=256
set rtp+=~/.vim/bundle/vundle/,~/.vim/bundle/vim-golang/
"=========================================
"vim配置设置
"=========================================
"取消vi兼容
set nocompatible
"将底色设置为淡绿色
"highlight Normal guibg=#CCE8CF
"设置字体
set guifont=Monaco
"允许退格键使用
set backspace=indent,eol,start whichwrap+=<,>,[,]
"禁止备份
set nobackup
"显示行号
set number
"实时匹配搜索文本
set incsearch
"搜索时高亮现实被找到的文本
set hlsearch
"magic模式:除了$.*^之外其他元字符都要加反斜杠
set magic
"开启新行时使用智能自动缩进
set smartindent
"编辑过程中,右下角显示光标位置
set ruler
"自动检测文件类型并加载相应插件以及缩进
filetype plugin indent on
"关于缩进的相关说明
"shiftwidth(缩进的空格数)
"tabstop(制表符的宽度,只是把制表符的缩进量给改了,还是一个tab,所以跨平台时依旧会出现不一致)
"expandtab(是否在缩进和遇到Tab键时使用空格替代,主要是保证跨平台时缩进的一致性;使用noexpandtab取消设置)
"softtabstop(软制表符宽度,设置为非零数值后使用Tab键和Backspace时光标移动的格数等于该数值,但实际插入的字符仍受tabstop和expandtab控制)
"autoindent(自动缩进,即每行的缩进值与上一行相等;使用noautoindent取消设置)
set tabstop=8
set softtabstop=4
set shiftwidth=4
set expandtab
"设置显示编码
set enc=utf-8
"设置打开文件编码
set fencs=utf-8,GB18030
"设置开启语法高亮
syntax on
"设置leader键
let mapleader = ","
"智能补全
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType java set omnifunc=javacomplete#Complete
"F2显示或隐藏菜单栏
set guioptions-=m
set guioptions-=T
map <silent> <F2> :if &guioptions =~# 'T' <Bar>
\set guioptions-=T <Bar>
\set guioptions-=m <bar>
\else <Bar>
\set guioptions+=T <Bar>
\set guioptions+=m <Bar>
\endif<CR>
"=================================
"vim按键映射
"=================================
"映射按键:剪切版、全选,系统有效
vmap <C-c> "+y
vmap <C-x> "+x
nmap <C-v> "+gP
vmap <C-v> "+gP
nmap <C-a> ggVG
"某些terminal下的vim alt key映射需要转成^[的形式
"ctrl+v ESC即可输入^[
if has("gui_running")
"智能补全
imap <M-/> <C-X><C-N>
"insert模式下将光标移动到行尾
imap <M-;> <Esc><S-a>
"insert模式下的光标的左右移动
imap <M-h> <Left>
imap <M-l> <Right>
imap <M-k> <up>
imap <M-j> <down>
else
"智能补全
imap ^[/ <C-X><C-N>
"insert模式下将光标移动到行尾
imap ^[; <Esc><S-a>
"insert模式下的光标的左右移动
imap ^[h <Left>
imap ^[l <Right>
imap ^[k <up>
imap ^[j <down>
endif
"运行Python脚本的按键映射
map <F12> :!"python" %<CR>
"运行gcc编译
"在windows下配置,则需要在%<后面加上.exe
func Compile()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -Wall -std=c99 % -g -lm -o %<"
"c++程序
elseif &filetype == 'cpp'
exec "!g++ -Wall -enable-auto-import % -g -lm -o %<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
endif
endfunc
"结束定义Compile
"定义Run函数
"./是当前目录,在windows下会报错
func Run()
if &filetype == 'c' || &filetype == 'cpp'
exec "!./%<"
elseif &filetype == 'java'
exec "!java %<"
elseif &filetype == 'go'
exec "!go run %"
endif
endfunc
"结束定义Run
"运行gcc编译并执行
"在windows下配置,则需要在%<后面加上.exe
func CompileRun()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -Wall -std=c99 % -g -lm -o %<"
exec "!./%<"
"c++程序
elseif &filetype == 'cpp'
exec "!g++ -Wall -enable-auto-import % -g -lm -o %<"
exec "!./%<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
"Go程序
elseif &filetype == 'go'
exec "!go run %"
endif
endfunc
"结束定义CompileRun
"定义Debug函数,用来调试程序
func Debug()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -std=c99 % -g -lm -o %<"
exec "!gdb %<"
elseif &filetype == 'cpp'
exec "!g++ % -g -lm -o %<"
exec "!gdb %<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
exec "!jdb %<"
endif
endfunc
"结束定义Debug
"设置程序的运行和调试的快捷键
map <F9> :call Compile()<CR>
map <F10> :call Run()<CR>
map <F11> :call Debug()<CR>
map <F12> :call CompileRun()<CR>
"==================================
"ctags配置
"==================================
"当前目录找不到tag元文件,则向上查找
set tags=tags;
"设置当前目录为当前打开文件所在目录
set autochdir
"==================================
"taglist配置
"==================================
"不同时显示多个文件的tag,只显示当前文件的
let Tlist_Show_One_File=1
"如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Exit_OnlyWindow=1
"==================================
"WinManager配置
"==================================
let g:NERDTree_title='NERD Tree'
let g:winManagerWindowLayout='NERDTree|TagList'
function! NERDTree_Start()
exec 'NERDTree'
endfunction
function! NERDTree_IsValid()
return 1
endfunction
"映射WinManager快捷键,在normal模式下按mt,控制开启和关闭
"nmap <silent> mt :WMToggle<CR>
nmap <silent> mt :if IsWinManagerVisible() <BAR> WMToggle<CR> <BAR> else <BAR> WMToggle<CR>:q<CR> endif <CR>
"设置WinManager宽度
let g:winManagerWidth = 40
"在进入vim时自动打开winmanager,打开=1,关闭=0
let g:AutoOpenWinManager = 0
"==================================
"Grep配置
"==================================
"直接按下<F3>键来查找光标所在的字符串:Grep插件
nnoremap <silent> <F3> :Rgrep<CR>
"=================================
"MiniBufExplorer配置
"=================================
"使用<C-Tab>向前循环切换到每个buffer上,并在当前窗口打开。<C-S-Tab>向后循环
"let g:miniBufExplMapCTabSwitchBufs = 1
"If you use other explorers like TagList you can
"let g:miniBufExplModSelTarget = 1
"关闭标签页
map <leader>c :CMiniBufExplorer<cr>
"=================================
"autocomplpop
"=================================
"acp是否自动开启,1=yes,0=no
let g:acp_enableAtStartup = 0
"mappigDriven防止单纯的鼠标移动造成搜索
let g:acp_mappingDriven = 1
"=================================
"neocomplcache配置
"=================================
"source neocomplcache.conf
"=================================
"vundle配置
"=================================
call vundle#rc()
Bundle 'gmarik/vundle'
"Bundle 'vim-plugin-foo'
"Bundle 'vim-plugin-bar'
Bundle 'Auto-Pairs'
Bundle 'bufexplorer.zip'
Bundle 'ctags.vim'
Bundle 'taglist.vim'
Bundle 'winmanager--Fox'
Bundle 'The-NERD-tree'
Bundle 'neocomplcache'
Bundle 'minibufexpl.vim'
Bundle 'https://github.com/abra/obsidian2.git'
Bundle 'https://github.com/bradfitz/goimports.git'
Bundle 'cespare/vim-golang'
colorscheme obsidian2
autocmd BufWritePre *.go :Fmt
if has("win32")||has("win95")||has("win64")||has("win16")
let g:iswindows=1
else
let g:iswindows=0
endif
set t_Co=256
set rtp+=~/.vim/bundle/vundle/,~/.vim/bundle/vim-golang/
"=========================================
"vim配置设置
"=========================================
"取消vi兼容
set nocompatible
"将底色设置为淡绿色
"highlight Normal guibg=#CCE8CF
"设置字体
set guifont=Monaco
"允许退格键使用
set backspace=indent,eol,start whichwrap+=<,>,[,]
"禁止备份
set nobackup
"显示行号
set number
"实时匹配搜索文本
set incsearch
"搜索时高亮现实被找到的文本
set hlsearch
"magic模式:除了$.*^之外其他元字符都要加反斜杠
set magic
"开启新行时使用智能自动缩进
set smartindent
"编辑过程中,右下角显示光标位置
set ruler
"自动检测文件类型并加载相应插件以及缩进
filetype plugin indent on
"关于缩进的相关说明
"shiftwidth(缩进的空格数)
"tabstop(制表符的宽度,只是把制表符的缩进量给改了,还是一个tab,所以跨平台时依旧会出现不一致)
"expandtab(是否在缩进和遇到Tab键时使用空格替代,主要是保证跨平台时缩进的一致性;使用noexpandtab取消设置)
"softtabstop(软制表符宽度,设置为非零数值后使用Tab键和Backspace时光标移动的格数等于该数值,但实际插入的字符仍受tabstop和expandtab控制)
"autoindent(自动缩进,即每行的缩进值与上一行相等;使用noautoindent取消设置)
set tabstop=8
set softtabstop=4
set shiftwidth=4
set expandtab
"设置显示编码
set enc=utf-8
"设置打开文件编码
set fencs=utf-8,GB18030
"设置开启语法高亮
syntax on
"设置leader键
let mapleader = ","
"智能补全
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
autocmd FileType java set omnifunc=javacomplete#Complete
"F2显示或隐藏菜单栏
set guioptions-=m
set guioptions-=T
map <silent> <F2> :if &guioptions =~# 'T' <Bar>
\set guioptions-=T <Bar>
\set guioptions-=m <bar>
\else <Bar>
\set guioptions+=T <Bar>
\set guioptions+=m <Bar>
\endif<CR>
"=================================
"vim按键映射
"=================================
"映射按键:剪切版、全选,系统有效
vmap <C-c> "+y
vmap <C-x> "+x
nmap <C-v> "+gP
vmap <C-v> "+gP
nmap <C-a> ggVG
"某些terminal下的vim alt key映射需要转成^[的形式
"ctrl+v ESC即可输入^[
if has("gui_running")
"智能补全
imap <M-/> <C-X><C-N>
"insert模式下将光标移动到行尾
imap <M-;> <Esc><S-a>
"insert模式下的光标的左右移动
imap <M-h> <Left>
imap <M-l> <Right>
imap <M-k> <up>
imap <M-j> <down>
else
"智能补全
imap ^[/ <C-X><C-N>
"insert模式下将光标移动到行尾
imap ^[; <Esc><S-a>
"insert模式下的光标的左右移动
imap ^[h <Left>
imap ^[l <Right>
imap ^[k <up>
imap ^[j <down>
endif
"运行Python脚本的按键映射
map <F12> :!"python" %<CR>
"运行gcc编译
"在windows下配置,则需要在%<后面加上.exe
func Compile()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -Wall -std=c99 % -g -lm -o %<"
"c++程序
elseif &filetype == 'cpp'
exec "!g++ -Wall -enable-auto-import % -g -lm -o %<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
endif
endfunc
"结束定义Compile
"定义Run函数
"./是当前目录,在windows下会报错
func Run()
if &filetype == 'c' || &filetype == 'cpp'
exec "!./%<"
elseif &filetype == 'java'
exec "!java %<"
elseif &filetype == 'go'
exec "!go run %"
endif
endfunc
"结束定义Run
"运行gcc编译并执行
"在windows下配置,则需要在%<后面加上.exe
func CompileRun()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -Wall -std=c99 % -g -lm -o %<"
exec "!./%<"
"c++程序
elseif &filetype == 'cpp'
exec "!g++ -Wall -enable-auto-import % -g -lm -o %<"
exec "!./%<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
"Go程序
elseif &filetype == 'go'
exec "!go run %"
endif
endfunc
"结束定义CompileRun
"定义Debug函数,用来调试程序
func Debug()
exec "w"
"C程序
if &filetype == 'c'
exec "!gcc -std=c99 % -g -lm -o %<"
exec "!gdb %<"
elseif &filetype == 'cpp'
exec "!g++ % -g -lm -o %<"
exec "!gdb %<"
"Java程序
elseif &filetype == 'java'
exec "!javac %"
exec "!jdb %<"
endif
endfunc
"结束定义Debug
"设置程序的运行和调试的快捷键
map <F9> :call Compile()<CR>
map <F10> :call Run()<CR>
map <F11> :call Debug()<CR>
map <F12> :call CompileRun()<CR>
"==================================
"ctags配置
"==================================
"当前目录找不到tag元文件,则向上查找
set tags=tags;
"设置当前目录为当前打开文件所在目录
set autochdir
"==================================
"taglist配置
"==================================
"不同时显示多个文件的tag,只显示当前文件的
let Tlist_Show_One_File=1
"如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Exit_OnlyWindow=1
"==================================
"WinManager配置
"==================================
let g:NERDTree_title='NERD Tree'
let g:winManagerWindowLayout='NERDTree|TagList'
function! NERDTree_Start()
exec 'NERDTree'
endfunction
function! NERDTree_IsValid()
return 1
endfunction
"映射WinManager快捷键,在normal模式下按mt,控制开启和关闭
"nmap <silent> mt :WMToggle<CR>
nmap <silent> mt :if IsWinManagerVisible() <BAR> WMToggle<CR> <BAR> else <BAR> WMToggle<CR>:q<CR> endif <CR>
"设置WinManager宽度
let g:winManagerWidth = 40
"在进入vim时自动打开winmanager,打开=1,关闭=0
let g:AutoOpenWinManager = 0
"==================================
"Grep配置
"==================================
"直接按下<F3>键来查找光标所在的字符串:Grep插件
nnoremap <silent> <F3> :Rgrep<CR>
"=================================
"MiniBufExplorer配置
"=================================
"使用<C-Tab>向前循环切换到每个buffer上,并在当前窗口打开。<C-S-Tab>向后循环
"let g:miniBufExplMapCTabSwitchBufs = 1
"If you use other explorers like TagList you can
"let g:miniBufExplModSelTarget = 1
"关闭标签页
map <leader>c :CMiniBufExplorer<cr>
"=================================
"autocomplpop
"=================================
"acp是否自动开启,1=yes,0=no
let g:acp_enableAtStartup = 0
"mappigDriven防止单纯的鼠标移动造成搜索
let g:acp_mappingDriven = 1
"=================================
"neocomplcache配置
"=================================
"source neocomplcache.conf
"=================================
"vundle配置
"=================================
call vundle#rc()
Bundle 'gmarik/vundle'
"Bundle 'vim-plugin-foo'
"Bundle 'vim-plugin-bar'
Bundle 'Auto-Pairs'
Bundle 'bufexplorer.zip'
Bundle 'ctags.vim'
Bundle 'taglist.vim'
Bundle 'winmanager--Fox'
Bundle 'The-NERD-tree'
Bundle 'neocomplcache'
Bundle 'minibufexpl.vim'
Bundle 'https://github.com/abra/obsidian2.git'
Bundle 'https://github.com/bradfitz/goimports.git'
Bundle 'cespare/vim-golang'
colorscheme obsidian2
autocmd BufWritePre *.go :Fmt