"===================通用配置======================
"文件搜索路径
set path=.,/usr/include,,
" 控制
set nocompatible "关闭vi兼容
filetype off "关闭文件类型侦测,vundle需要
set fileencodings=utf-8,gbk "使用utf-8或gbk编码方式
syntax on "语法高亮
set backspace=2 "退格键正常模式
set whichwrap=<,>,[,] "当光标到行首或行尾,允许左右方向键换行
set autoread "文件在vim外修改过,自动重载
set nobackup "不使用备份
set confirm "在处理未保存或只读文件时,弹出确认消息
set scrolloff=3 "光标移动到距离顶部或底部开始滚到距离
set history=1000 "历史记录数
set mouse=a "use鼠标
set selection=inclusive "选择包含最后一个字符
set selectmode=mouse,key "启动选择模式的方式
set completeopt=longest,menu "智能补全,弹出菜单,无歧义时才自动填充
set noswapfile "关闭交换文件
set hidden "允许在有未保存的修改时切换缓冲区
set showmatch "设置匹配模式
set autoindent "设置C/C++方式自动对齐
set cindent
set nobackup "设置取消备份 禁止临时文件的生成
set noswapfile
"显示
colorscheme mycolor "选择配色方案
set t_Co=256 "可以使用的颜色数目
set number "显示行号
set laststatus=2 "显示状态行
set ruler "显示标尺
set showcmd "显示输入的命令
set showmatch "高亮括号匹配
set matchtime=1 "匹配括号高亮的时间(十分之一秒)
set matchpairs={:},(:),[:] "匹配括号"{}""()""[]"
set hlsearch "检索时高亮匹配项
set incsearch "边检索边显示匹配
set cursorline " 突出显示当前行
let NERDTreeWinPos='left' "窗口位置
let NERDTreeWinSize=31 "窗口宽度
let NERDTreeMinimalUI=1 "不显示'Bookmarks' label 'Press ? for help'
"格式
set noexpandtab "不要将tab转换为空格
set shiftwidth=4 "自动缩进的距离,也是平移字符的距离
set tabstop=4 "tab键对应的空格数
set autoindent "自动缩进
set smartindent "智能缩进
"功能函数
function! UpdateCtags()
let curdir=getcwd()
while !filereadable("./tags")
cd ..
if getcwd() == "/"
break
endif
endwhile
if filewritable("./tags")
!ctags -R --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q
TlistUpdate
endif
execute ":cd " . curdir
endfunction
"===================按键映射======================
nnoremap <silent> <F4> :NERDTreeToggle<CR>
nmap <F10> :call UpdateCtags()<CR>
"使用Ctrl-l 和 Ctrl+h 切换标签页
nnoremap <C-l> gt
nnoremap <c-h> gT
"在行末加上分号
nnoremap <silent> <Leader>; :<Esc><End>a<Space>;<Esc><Down>
"保存
nnoremap <C-s> :w<CR>
"替换
nnoremap <C-h> :%s/<C-R>=expand("<cword>")<CR>/<C-R>=expand("<cword>")<CR>
"自动启动
autocmd VimEnter * NERDTree
autocmd BufWritePost *.c,*.h,*.cpp call UpdateCtags()
"===================插件管理======================
" 下载vundle
" git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
" 下载pathogen
" curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
" 将vundle加入到runtime path
set rtp+=~/.vim/bundle/Vundle.vim
" 下载到bundle目录的插件
call vundle#begin()
" plugin on GitHub repo
Plugin 'VundleVim/Vundle.vim'
Plugin 'scrooloose/nerdtree' "提供展示文件/目录列表的功能,比自带的文件浏览器要好很多
Plugin 'Xuyuanp/nerdtree-git-plugin'
Plugin 'taglist.vim' "用来提供单个源代码文件的函数列表之类的功能
Plugin 'Lokaltog/vim-powerline' "状态栏显示
Plugin 'garbas/vim-snipmate' "一些代码片段
Plugin 'tomtom/tlib_vim'
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'honza/vim-snippets'
Plugin 'scrooloose/nerdcommenter' "提供快速注释/反注释代码块的功能
Plugin 'ervandew/supertab' "代码补全
Plugin 'vim-airline/vim-airline' "底部切换文件
Plugin 'vim-airline/vim-airline-themes'
Plugin 'Chiel92/vim-autoformat' "格式化代码
Plugin 'vim-syntastic/syntastic' "代码拼写检查
Plugin 'fholgado/minibufexpl.vim' "多文档编辑
Plugin 'EasyGrep'
" Git plugin not hosted on GitHub
" Plugin 'git://...'
" git repos on your local machine
" Plugin 'file://...'
call vundle#end()
filetype plugin on "允许插件
filetype plugin indent on " required
"===================插件配置======================
"-----pathogen-----
execute pathogen#infect()
"********************************************************
" NERD_Tree 配置 *
"********************************************************
let NERDChristmasTree=1 "显示增强
let NERDTreeAutoCenter=1 "自动调整焦点
let NERDTreeMouseMode=2 "鼠标模式:目录单击,文件双击
"let NERDTreeQuitOnOpen=1 "打开文件后自动关闭
let NERDTreeShowFiles=1 "显示文件
let NERDTreeShowHidden=1 "显示隐藏文件
let NERDTreeHightCursorline=1 "高亮显示当前文件或目录
let NERDTreeShowLineNumbers=1 "显示行号
let NERDTreeWinPos='left' "窗口位置
let NERDTreeWinSize=31 "窗口宽度
let NERDTreeMinimalUI=1 "不显示'Bookmarks' label 'Press ? for help'
let g:NERDTreeCaseSensitiveSort = 1
let g:nerdtree_tabs_open_on_console_startup=1
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
let g:NERDTreeIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "✖",
\ "Dirty" : "✗",
\ "Clean" : "✔︎",
\ 'Ignored' : '☒',
\ "Unknown" : "?"
\ }
nnoremap <silent> <F4> :NERDTreeToggle<CR> "快捷键
"*****************************************************
" taglist配置 *
"*****************************************************
let Tlist_Compact_Format=1 "不显示"press F1 to display help"
let Tlist_Use_Right_Window=1 "窗口在右侧显示
let Tlist_Show_One_File=1 "只显示当前文件的tags
let Tlist_Auto_Highlight_tag=1 "高亮显示
let Tlist_Auto_Open=1 "自动打开
let Tlist_Auto_Update=1 "随文件自动更新
let Tlist_WinWidth=30 "设置宽度
let Tlist_Exit_OnlyWindow=1 "taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_SingClick=1 "单击跳转
let Tlist_GainFocus_On_ToggleOpen = 1 "打开taglist时,光标停在taglist窗口
let Tlist_Display_Tag_Scope=1
let Tlist_Process_File_Always=1
nnoremap <silent> <F8> :TlistToggle<CR> "打开关闭快捷键
"*****************************************************
" Syntastic配置 语法检查插件
"*****************************************************
let g:Syntastic_check_on_open=1
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
"*********************************************
" MiniBufferExplorer 自动格式化代码
"
let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapCTabSwitchBufs = 1 " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
"let g:miniBufExplMapCTabSwitchWindows = 1 " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持
let g:miniBufExplModSelTarget = 1 " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer
"*********************************************
" autoformat 自动格式化代码
"
let g:formatdef_harttle = '"astyle --style=attach --pad-oper"'
let g:formatters_cpp = ['harttle']
let g:formatters_java = ['harttle']
noremap <F5> :Autoformat<CR>
"*********************************************
" vim-airline 底部切换文件
"
let g:airline_powerline_fonts=1
let g:airline#extensions#tabline#enabled=1 "顶部tab显示"
nmap <tab> :bn<cr> "设置tab键映射"
let g:airline_theme='simple' " murmur配色也不错
"配置Supertab
let g:SuperTabRetainCompletionType=2 "记住上次的补全方式,直到按Esc退出插入模式位置
let g:SuperTabDefaultCompletionType="<c-x><c-o>" "按下tab后默认补全方式为<c-p>,现在改为<c-x><c-o>
转载于:https://my.oschina.net/230/blog/1807926