"bundle配置
filetype off
set nocompatible
"设置Vundle的运行路径
set rtp+=/opt/bundle/Vundle.vim
"设置插件的安装路径,vundle插件起始标志
call vundle#begin('/opt/vim/bundle')
"让vundle管理插件版本
Plugin 'VundleVim/Vundle.vim'
"添加nerdtree插件
Plugin 'scrooloose/nerdtree'
"自动缩进
"Plugin 'vim-scripts/indentpython.vim'
"Powerline状态栏
Plugin 'Lokaltog/vim-powerline'
"输入法修复esc
Plugin 'lilydjwg/fcitx.vim'
"自动补全括号和引号
Plugin 'jiangmiao/auto-pairs'
"细垂直线显示缩进
Plugin 'Yggdroot/indentLine'
"python pep8风格 需要先pip install autopep8
Plugin 'tell-k/vim-autopep8'
"vim 主题material my favorite
Plugin 'hzchirs/vim-material'
"不同颜色括号
Plugin 'kien/rainbow_parentheses.vim'
"python 代码补全
Plugin 'maralla/completor.vim'
"你的所有插件需要在下面这行之前
call vundle#end()
filetype plugin indent on
"根据不同类型文件记载对应插件
filetype plugin on
"对齐风格配置
let g:rbpt_colorpairs = [
\ ['brown', 'RoyalBlue3'],
\ ['Darkblue', 'SeaGreen3'],
\ ['darkgray', 'DarkOrchid3'],
\ ['darkgreen', 'firebrick3'],
\ ['darkcyan', 'RoyalBlue3'],
\ ['darkred', 'SeaGreen3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['brown', 'firebrick3'],
\ ['gray', 'RoyalBlue3'],
\ ['darkmagenta', 'DarkOrchid3'],
\ ['Darkblue', 'firebrick3'],
\ ['darkgreen', 'RoyalBlue3'],
\ ['darkcyan', 'SeaGreen3'],
\ ['darkred', 'DarkOrchid3'],
\ ['red', 'firebrick3'],
\ ]
let g:rbpt_max = 16
let g:rbpt_loadcmd_toggle = 0
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
"vim-material配色方案
" Light
set background=light
colorscheme vim-material
" 在处理未保存或只读文件的时候,弹出确认
set confirm
"缩进指示线"
let g:indentLine_char='┊'
let g:indentLine_char_list = ['|', '¦', '┆', '┊']
let g:indentLine_color_term = 239
let g:indentLine_conceallevel = 2
let g:indentLine_enabled = 1
"启用自动缩进
set autoindent
set smartindent
"autopep8设置"<F8>使用自动格式化pep8风格
let g:autopep8_disable_show_diff=1
autocmd FileType python noremap <buffer> <F8> :call Autopep8()<CR>
"新建.c,.h,.sh,.java文件,自动插入文件头
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java,*.py exec ":call SetTitle()"
""定义函数SetTitle,自动插入文件头
func SetTitle()
"如果文件类型为.sh文件
if &filetype == 'sh'
call setline(1,"\#########################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+1, "\# Author: way")
call append(line(".")+2, "\# mail: ww875749864@outlook.com")
call append(line(".")+3, "\# Created Time: ".strftime("%c"))
call append(line(".")+4, "\# Description: ")
call append(line(".")+5, "\#########################################################################")
call append(line(".")+6, "\#!/bin/bash")
call append(line(".")+7, "")
elseif &filetype == 'python'
call setline(1,"########################################################################")
call append(line("."), "\# File Name: ".expand("%"))
call append(line(".")+1, "\# Author: way")
call append(line(".")+2, "\# mail: ww875749864@outlook.com")
call append(line(".")+3, "\# Created Time: ".strftime("%c"))
call append(line(".")+4, "\# Description:")
call append(line(".")+5, "\#########################################################################")
call append(line(".")+6, "")
else
call setline(1, "/*************************************************************************")
call append(line("."), " > File Name: ".expand("%"))
call append(line(".")+1, " > Author: way")
call append(line(".")+2, " > Mail: ww875749864@outlook.com ")
call append(line(".")+3, " > Created Time: ".strftime("%c"))
call append(line(".")+4, " > Description: ")
call append(line(".")+5, " ************************************************************************/")
call append(line(".")+6, "")
endif
if &filetype == 'cpp'
call append(line(".")+7, "#include<iostream>")
call append(line(".")+8, "using namespace std;")
call append(line(".")+9, "")
endif
if &filetype == 'c'
call append(line(".")+7, "#include<stdio.h>")
call append(line(".")+8, "")
endif
endfunc
"设置分割窗口
set splitbelow
set splitright
"设置窗口移动快捷键
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
"设置按F2启动NerdTree
map <F2> :NERDTreeToggle<CR>
"NERDTree配置
let NERDChristmasTree=1 "显示增强
let NERDTreeAutoCenter=1 "自动调整焦点
let NERDTreeShowFiles=1 "显示文件
let NERDTreeShowLineNumbers=1 "显示行号
let NERDTreeHightCursorline=1 "高亮当前文件
let NERDTreeShowHidden=0 "显示隐藏文件
let NERDTreeMinimalUI=0 "不显示'Bookmarks' label 'Press ? for help'
let NERDTreeWinSize=31 "窗口宽度
"隐藏目录树种的.pyc文件
let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree
"设置可以删除缩进
set backspace=2
"设置utf-8编码
set encoding=utf-8
"设置C语言自动对齐
set cindent
"开启设置语法高亮
syntax on
syntax enable
set expandtab
"侦测不同文件类型
"filetype on
" 开启实时搜索功能
set incsearch
" 搜索时大小写不敏感
set ignorecase
" vim 自身命令行模式智能补全
set wildmenu
" 总是显示状态栏
set laststatus=2
" 显示光标当前位置
set ruler
" 开启行号显示
set number
" 高亮显示当前行/列
set cursorline
" 高亮显示搜索结果
set hlsearch
"指定配色方案为256
set t_Co=256
"设置可以在VIM使用鼠标
set mouse=v
"设置TAB宽度
set tabstop=4
"设置历史记录条数
set history=500
" 让配置变更立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC
"记忆上次修改的位置
au BufReadPost * if line("'\'") > 1 && line("'\'") <= line("$") | exe "normal! g'\"" | endif
"新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
"<F5>自动执行python代码
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!g++ % -o %<"
exec "!time ./%<"
elseif &filetype == 'cpp'
exec "!g++ % -o %<"
exec "!time ./%<"
elseif &filetype == 'java'
exec "!javac %"
exec "!time java %<"
elseif &filetype == 'sh'
:!time bash %
elseif &filetype == 'python'
exec "!clear"
exec "!python3 %"
elseif &filetype == 'html'
exec "!firefox % &"
elseif &filetype == 'go'
" exec "!go build %<"
exec "!time go run %"
elseif &filetype == 'mkd'
exec "!~/.vim/markdown.pl % > %.html &"
exec "!firefox %.html &"
endif
endfunc
"maralla/completor 补全设置tab自动补全
let g:completor_min_chars=3 "增加自动补全提示的阀值
let g:completor_python_binary = '/usr/bin/python'
let python_highlight_all = 1
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <cr> pumvisible() ? "\<C-y>\<cr>" : "\<cr>"