强烈拥护开源精神,高举开源大旗,今天我就分享下我自己结合网上还有自己实际使用配的vimrc,可以给各位参考下,不要见笑,具体说明我在rc里写的也很详细,可以具体看下,也希望可以借这个机会能多认识认识几个Vimer们.
PS: 比如说转移工作环境或者切换主机,比较便捷到做法就是安装好vim之后,一遍git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle,将vundle插件装好之后,一阵BundleInstall,即可完美切换到你以前使用到Vim环境,十分方便. 另外主题下载之后拷贝到.vim/colors之后即可适配,地址在.vimrc内部,还有monaco字体配置可以直接git clone https://github.com/jiyinyiyong/monaco-font.git/
"========================================
" File Name: .vimrc
" Description: Vim配置文档
"========================================
let mapleader = ','
let g:mapleader = ','
"==========================================
" General Settings
"==========================================
" 开启语法高亮
syntax enable
" 开启语法高亮
syntax on
" 设置字体
set guifont =Monaco\ 12
" 设置历史记录条数
set history = 2000
" 检测文件类型
filetype on
" 针对不同的文件,采用不同的缩进方式
filetype indent on
" 允许插件
filetype plugin on
" 启动自动补全
filetype plugin indent on
" 文件修改之后自动读入
set autoread
" 启动后不显示提示
"set shortmess=atI
" 备份,到另一个位置. 防止误删, 目前是取消备份
"set backup
"set backupext=.bak
"set backupdir=/tmp/vimbk/
" 设置取消备份,禁止临时文件生成
set nobackup
set noswapfile
" create undo file
set undolevels = 1000 " how many undos
set undoreload = 10000 " number of lines to save for undo
if v: version >= 730
set undofile " keep a persistent backup file
set undodir = /tmp/vimundo/
endif
"set wildignore=*.swp,*.bak,*.pyc,*.class,.svn
" 显示当前横竖线
"set cursorline
"set cursorcolumn
" 设置退出Vim之后内容显示在终端屏幕,可以用于查看和复制
" 好处:误删什么,如果以前屏幕打开可以用来找回
" set t_ti= t_te=
" 设置在Vim中可以使用鼠标,防止终端无法拷贝
set mouse = a
" 修复ctrl+m多光标操作选择的bug,但是改变了ctrl+v进行字符选中将包含光标下的字符
" set selection=inclusive
" set selectmode=mouse,key
" no errors sound
set title " change ther terminal's title
set novisualbell " don't beep
set noerrorbells " don't beep
set t_vb =
set tm = 500
" remember info about open buffers on close
set viminfo^ =%
" for regular expression turn magic on
set magic
" configure backspace so it acts as it should act
set backspace = eol , start ,indent
set whichwrap +=<,>, h , l
" FuzzyFinder and ctrlp couldn't auto change dir you must manual add cd in
" command mode, so add this command to auto change current dir for these
" plugins
" set autochdir
"==========================================
" Display Settings
"==========================================
"
" 显示当前行号和列号
set ruler
" 在状态栏显示正在输入的命令
set showcmd
" 左下角显示当前Vim模式
set showmode
" 光标移动至少保留的行数
"set scrolloff=7
" 命令行(在状态行下)的高度,默认为1,这里是2
set statusline =% <% f\ % h% m% r% =% k[%{(& fenc ==\ "\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ % -14.(% l ,% c%V%)\ %P
" 总是显示状态栏(Powerline需要2行)
set laststatus = 2
" 显示行号
set number
" 指定不折行
set nowrap
" 设置代码匹配,包括括号匹配情况
set showmatch
" how many tenths of a second to blink when matching brackets
" setmatchtime=2
" 开启及时搜索(is)
set incsearch
" 设置搜索高亮(hlsearch)
set hls
" 设置搜索时忽略大小写
set ignorecase
" 当搜索的时候尝试smart
set smartcase
" 设置代码折叠
"set foldenable
" 折叠方法
" manual 手工折叠
" indent 缩进折叠
" expr 表达式折叠
" syntax 语法折叠
" diff 对没有更改的文件折叠
" marker 标记折叠
"set foldmethod=indent
"set foldlevel=99
" 设置C/C++方式自动对齐
set autoindent
set cindent
set smartindent
" 设置tab宽度
set tabstop = 4
" 设置自动对齐空格数
set shiftwidth = 4
" 按退格键时可以一次删除4个空格
"set softtabstop=4
" 编辑的时候将所有的tab设置为空格(expandtab)
set et
" 使用Backspace直接删除tab
set smarttab
" 不在单词中间折行
set lbr
" 缩进时取整use multiple of shiftwidth when indenting with '<' and '>'
" set shiftround
" a buffer becomes hidden when it is abandoned
" set hidden
" set wildmode=list:longest
" set ttyfast
" 00x增减数字时使用十进制
"set nrformats=
"
"==========================================
" FileEncode Settings
"==========================================
" 设置编码方式
set encoding =utf -8
" 设置打开文件的编码格式
set fileencodings =ucs -bom ,utf -8 ,cp936 ,gb18030 ,big5 ,euc -jp ,euc -kr ,latin1
set helplang = cn
" 只对终端影响(默认)
set termencoding =utf -8
" use UNIX as the standard file type
set ffs =unix ,dos ,mac
" 如遇Unicode值大于255的文本,不必等到空格再折行。
set formatoptions += m
" 合并两行中文时,不在中间加空格:
set formatoptions +=B
"==========================================
" Other Settings
"==========================================
"autocmd! bufwritepost _vimrc source % " .vimrc修改之后自动加载(Windows)
"autocmd! bufwritepost .vimrc source % " .vimrc修改之后自动加载(Linux)
" 自动补全配置让Vim补全菜单行为跟IDE一致
set completeopt =longest ,menu
" 增强模式中的命令行自动完成操作
set wildmenu
" ignore compiled files
" set wildignore=*.o,*~,*.pyc,*.class
"离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0| pclose| endif
"回车即选中当前项
inoremap <expr > <CR > pumvisible() ? "\<C-y>" : "\<CR>"
"上下左右键的行为 会显示其他信息
inoremap <expr > <Down > pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr > <Up > pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr > <PageDown > pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr > <PageUp > pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
" if this not work ,make sure .viminfo is writable for you
if has( "autocmd")
au BufReadPost * if line( "'\"") > 1 && line( "'\"") <= line( "$") | exe "normal! g'\"" | endif
endif
"==========================================
" HotKey Settings
"==========================================
"
" 去掉搜索高亮
"noremap <silent><leader>/ :nohls<CR>
map <leader >/ : nohls <CR >
map <leader > tn : tabnew < cr >
map <leader > to : tabonly < cr >
map <leader > tc : tabclose < cr >
map <leader > tm : tabmove
" Opens a new tab with the current buffer's path
" Super useful when editing files in the same directory
map <leader > te : tabedit < c - r >=expand( "%:p:h" )< cr >/
" Quickly edit/reload the vimrc file
nmap < silent > <leader >ev : e $MYVIMRC <CR >
nmap < silent > <leader > sv : so $MYVIMRC <CR >
" 手动刷新tags(含cscope)
nmap tg : !ctags -R -- c ++-kinds =+p --fields =+iaS --extra =+ q * <CR >: set tags +=. /tags<CR>:!cscope -Rbq<CR>:cs add ./ cscope.out . <CR >
" 切换buffer
nnoremap [b :bp <CR >
nnoremap ]b :bn <CR >
" cscope设置
if has( "cscope")
set csprg = /usr/ bin/ cscope " 制定cscope命令
set csto = 0 " ctags查找顺序,0表示先cscope数据库再标签文件,1表示先标签文件爱
set cst " 同时搜索tag文件和cscope数据库
set cscopequickfix =s -, c -, d -, i -, t -, e - "使用QucikFix窗口来显示cscope查找结果
set nocsverb
if filereadable( "cscope.out") "如果当前目录下有cscope.out则加载进Vim
cs add cscope.out
elseif $CSCOPE_DB != "" "否则只要环境变量不为空就添加制定的数据库到Vim
cs add $CSCOPE_DB
endif
set csverb
endif
"map <F4>:!cscope -Rbq<CR>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
" 查找符号
nmap <leader >css : cs find s <C -R >=expand( "<cword>" )<CR ><CR > : copen <CR ><CR >
" 查找定义
nmap <leader >csg : cs find g <C -R >=expand( "<cword>" )<CR ><CR >
" 查找被这个函数调用的函数
nmap <leader >csd : cs find d <C -R >=expand( "<cword>" )<CR ><CR > : copen <CR ><CR >
" 查找调用这个函数的函数
nmap <leader >csc : cs find c <C -R >=expand( "<cword>" )<CR ><CR >: copen <CR ><CR >
" 查找这个字符串
nmap <leader > cst : cs find t <C -R >=expand( "<cword>" )<CR ><CR >: copen <CR ><CR >
" 查找这个egrep匹配模式
nmap <leader >cse : cs find e <C -R >=expand( "<cword>" )<CR ><CR >: copen <CR ><CR >
" 查找这个文件
nmap <leader >csf : cs find f <C -R >=expand( "<cfile>" )<CR ><CR >
" 查找include这个文件的文件
nmap <leader >csi : cs find i <C -R >=expand( "<cfile>" )<CR ><CR > : copen <CR ><CR >
" 设定是否使用QuickFix来显示结果
set cscopequickfix =s -, c -, d -, i -, t -, e -
" QuickFix open and close
nnoremap <F11 > : copen <CR >
nnoremap <F12 > : cclose <CR >
" QucikFix next and prev
nnoremap <F9 > : cn <CR >
nnoremap <F10 > : cp <CR >
"==========================================
" Theme Settings
"==========================================
" Set extra options when running in GUI mode
"if has("gui_running")
" set guifont=Monaco\ 12
" set guioptions-=T
" set guioptions+=e
" set guioptions-=r
" set guioptions-=L
" set guitablabel=%M\ %t
" set showtabline=1
" set linespace=2
" set noimd
" set t_Co=256
"endif
" 设置主题
set background = dark
colorscheme molokai
"colorscheme solarized
set t_Co = 256
" 添加水平滚动条
"set guioptions+=b
" 取消菜单栏和导航栏
set guioptions -= m
set guioptions -=T
" 去除左右两边滚动条
set go -= r
set go -=L
" 设置水平行数和竖直列数
set lines = 35
set columns = 99
" 使pathogen生效(插件管理器,只需将插件放入bundle,将pathogen.vim放入autoload即可)
"execute pathogen#infect()
"
"==========================================
" Vundle Settings
"==========================================
" 关闭vi的一致性模式,避免以前版本的一些Bug和局限
set nocompatible
filetype off " Vundle必须要求使用filetype off,如果不设置该选项,UltiSnips无法使用
if has( 'win32') || has( 'win64')
set rtp +=$HOME /vimfiles/vundle
call vundle#rc( '$HOME/vimfiles/bundle/')
else
set rtp +=~ /.vim/bundle/vundle
call vundle#rc()
endi
" let Vundle manage Vundle
" required
Bundle 'gmarik/vundle'
" My bundles here:
" original repos on GitHub
Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
" 自动补全单引号,双引号等
Bundle 'Raimondi/delimitMate'
" 快速加入修改环绕字符
Bundle 'tpope/vim-surround'
" for repeat -> enhance surround.vim, . to repeat command
Bundle 'tpope/vim-repeat'
" 多光标编辑 (该插件的ctrl-p可以正常使用,当到达最后一个的时候ctrlp才会起作用)
Bundle 'terryma/vim-multiple-cursors'
" 对括号等进行光标的控制辅助
"Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
"Bundle 'tpope/vim-rails.git'
Bundle 'Valloric/ListToggle'
Bundle 'L9'
" vim-scripts repos
Bundle 'a.vim'
Bundle 'grep.vim'
"Bundle 'easytags.vim'
"Bundle 'c.vim'
" non-GitHub repos
"Bundle 'git://git.wincent.com/command-t.git'
" Git repos on your local machine (i.e. when working on your own plugin)
"Bundle 'file:///Users/gmarik/path/to/plugin'
"==========================================
" ctrlp settings
"==========================================
Bundle 'kien/ctrlp.vim'
"let g:ctrlp_map = '<leader>p'
"let g:ctrlp_cmd = 'CtrlP'
"map <leader>f :CtrlPMRU<CR>
"set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux
"let g:ctrlp_custom_ignore = {
" \ 'dir': '\v[\/]\.(git|hg|svn|rvm)$',
" \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz)$',
" \ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
" \ }
let g:ctrlp_custom_ignore = {
\ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|lib|out|png|img|bak|db|o)'
\ }
" 在每次进行切换分支或者重新设定custome_ignore选项的时候,必须手动清除CtrlP的缓存,
" 也可以使用下句不让它进行缓存处理,但扫描时间会比较耗时
"let g:ctrlp_use_caching = 0
let g:ctrlp_working_path_mode = 0
let g:ctrlp_match_window_bottom = 1
let g:ctrlp_max_height = 15
let g:ctrlp_match_window_reversed = 0
let g:ctrlp_mruf_max = 500
let g:ctrlp_follow_symlinks = 1
nnoremap <leader >b :CtrlPBuffer <CR >
nnoremap <leader > d :CtrlPDir <CR >
"==============================================================
" ctrlp-funky settings ctrlp插件 - 不用ctag进行函数快速跳转
"==============================================================
Bundle 'tacahiroy/ctrlp-funky'
"nnoremap <Leader>fu :CtrlPFunky<Cr>
nnoremap <Leader > f :CtrlPFunky <Cr >
" narrow the list down with a word under cursor
"nnoremap <Leader>fU :execute 'CtrlPFunky ' . expand('<cword>')<Cr>
let g:ctrlp_funky_syntax_highlight = 1
let g:ctrlp_extensions = [ 'funky']
"==========================================
" nerdcommenter settings 快速注释
"==========================================
Bundle 'scrooloose/nerdcommenter'
" 注释与代码之间留存的空格数
let g:NERDSpaceDelims = 1
"==========================================
" Airline settings
"==========================================
"Bundle 'bling/vim-airline'
"Bundle 'bling/vim-bufferline'
"if !exists('g:airline_symbols')
"let g:airline_symbols = {}
"endif
"let g:airline_left_sep = '▶'
"let g:airline_left_alt_sep = ''
"let g:airline_right_sep = '◀'
"let g:airline_right_alt_sep = ''
"let g:airline_symbols.linenr = '¶'
"let g:airline_symbols.branch = '⎇'
"" 开启tabline
"let g:airline#extensions#tabline#enabled = 1
"" tabline中当前buffer两端的分隔符
"let g:airline#extensions#tabline#left_sep = ' '
"" tabline为激活的buffer的两端字符
"let g:airline#extensions#tabline#left_alt_sep = '|'
"" tabline中buffer显示编号
"let g:airline#extensions#tabline#buffer_nr_show = 1
"let g:airline#extensions#buffline#enabled = 1
"let g:airline#extensions#bufferline#overwrite_variables = 1
"" airline主题
"let g:airline_theme = 'powerlineish'
"括号显示增强
"Bundle 'kien/rainbow_parentheses.vim'
"let g:rbpt_colorpairs = [
" \ ['brown', 'RoyalBlue3'],
" \ ['Darkblue', 'SeaGreen3'],
" \ ['darkgray', 'DarkOrchid3'],
" \ ['darkgreen', 'firebrick3'],
" \ ['darkcyan', 'RoyalBlue3'],
" \ ['darkred', 'SeaGreen3'],
" \ ['darkmagenta', 'DarkOrchid3'],
" \ ['brown', 'firebrick3'],
" \ ['gray', 'RoyalBlue3'],
" \ ['black', 'SeaGreen3'],
" \ ['darkmagenta', 'DarkOrchid3'],
" \ ['Darkblue', 'firebrick3'],
" \ ['darkgreen', 'RoyalBlue3'],
" \ ['darkcyan', 'SeaGreen3'],
" \ ['darkred', 'DarkOrchid3'],
" \ ['red', 'firebrick3'],
" \ ]
"let g:rbpt_max = 40
"let g:rbpt_loadcmd_toggle = 0
"au VimEnter * RainbowParenthesesToggle
"au Syntax * RainbowParenthesesLoadRound
"au Syntax * RainbowParenthesesLoadSquare
"au Syntax * RainbowParenthesesLoadBraces
" 主题 solarized
Bundle 'altercation/vim-colors-solarized'
"let g:solarized_termcolors=256
let g:solarized_termtrans = 1
let g:solarized_contrast = "normal"
let g:solarized_visibility = "normal"
" 主题 molokai
Bundle 'tomasr/molokai'
"==========================================
" TagList settings
"==========================================
Bundle 'taglist.vim'
" increase the width of the taglist window
"let Tlist_WinWidth=20
" 自动打开TagList的window
let Tlist_Auto_Open = 0
" 当只剩下Tlist的时候自动关闭
let Tlist_Exit_OnlyWindow = 1
" 打开tags用单击
let Tlist_Use_SingleClick = 1
" close tag folders for inactive buffers
let Tlist_File_Fold_Auto_Close = 1
" show the fold indiactor column in the taglist window
let Tlist_Enable_Fold_Column = 1
" 自动更新TagList包含最新编辑的文件
let Tlist_Auto_Update = 1
" 显示一个文件的tag
let Tlist_Show_One_File = 1
" 在右侧显示窗口
let Tlist_Use_Right_Window = 1
" 按照名称排序
let Tlist_Sort_Type = "name"
" 让TagList始终解释文件中的tag,不管TagList窗口有没有打开
let Tlist_Process_File_Always = 1
" 设置leader键
nnoremap <leader > tl :TlistToggle <CR >
"==========================================
" YouCompleteMe settings
"==========================================
Bundle 'Valloric/YouCompleteMe'
"let g:ycm_key_list_select_completion=['<c-n>']
"let g:ycm_key_list_previous_completion=['<c-p>']
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py'
let g:ycm_collect_indentifiers_from_tags_files = 1
let g:ycm_seed_identifiers_with_syntax = 1
" 避免YCM每次加载都对用户提示是否加载
let g:ycm_confirm_extra_conf = 0
let g:ycm_autoclose_preview_window_after_completion = 1
let g:ycm_complete_in_comments = 1 "在注释输入中也能补全
let g:ycm_complete_in_strings = 1 "在字符串输入中也能补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 "注释和字符串中的文字也会被收入补全
" 跳到定义或声明
nnoremap <F2 > :YcmCompleter GoToDefinitionElseDeclaration <CR >
" 强制进行编译
nnoremap <F5 > :YcmForceCompileAndDiagnostics <CR >
"==========================================
" Syntastic settings
"==========================================
Bundle 'scrooloose/syntastic'
" 在打开文件的时候检查
let g:syntastic_check_on_open = 1
let g:syntastic_cpp_include_dirs = [ '/usr/include/']
let g:syntastic_cpp_remove_include_errors = 1
let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = '-std=c++11 -stdlib=libstdc++'
"set error or warning signs
let g:syntastic_error_symbol = ''
let g:syntastic_warning_symbol = ''
"whether to show balloons
let g:syntastic_enable_balloons = 1
let g:syntastic_always_populate_loc_list = 1
"==========================================
" ListToggle settings
"==========================================
let g:lt_location_list_toggle_map = '<leader>l'
let g:lt_quickfix_list_toggle_map = '<leader>q'
"==========================================
" NERDtree settings
"==========================================
Bundle 'scrooloose/nerdtree'
let NERDTreeWinPos = 'left'
let NERDTreeHighlightCursorline = 1
nnoremap <leader >n :NERDTreeToggle <CR >
autocmd bufenter * if (winnr( "$") == 1 && exists( "b:NERDTreeType") &&b:NERDTreeType == "primary") | q | endif
"==========================================
" miniBufExpl settings
"==========================================
"Bundle 'fholgado/minibufexpl.vim'
"let g:miniBufExplMapWindowNavVim = 1
"let g:miniBufExplMapWindowNavArrows = 1
"let g:miniBufExplMapCTabSwitchBufs = 1
"let g:miniBufExplModSelTarget = 1
""解决FileExplorer窗口变小问题
"let g:miniBufExplForceSyntaxEnable = 1
"let g:miniBufExplorerMoreThanOne=2
"let g:miniBufExplCycleArround=1
"" 默认方向键左右可以切换buffer
"nnoremap <TAB> :MBEbn<CR>
"nnoremap <s-TAB> :MBEbp<CR>
"noremap <leader>bn :MBEbn<CR>
"noremap <leader>bp :MBEbp<CR>
"noremap <leader>bd :MBEbd<CR>
"==========================================
" FuzzyFinder settings
"==========================================
"Bundle 'FuzzyFinder'
"nnoremap <leader>f :FufFile<CR>
"nnoremap <leader>b :FufBuffer<CR>
"nnoremap <leader>d :FufDir<CR>
"==========================================
" UltiSnips settings
"==========================================
Bundle 'SirVer/ultisnips'
Bundle 'honza/vim-snippets'
let g:UltiSnipsExpandTrigger = "<c-j>"
let g:UltiSnipsJumpForwardTrigger = "<c-j>"
let g:UltiSnipsJumpBackwardTrigger = "<c-k>"
" 定义存放代码片段的文件夹 .vim/additional_snippets下,使用自定义和默认的,将会的到全局,有冲突的会提示
let g:UltiSnipsSnippetDirectories =[ "additional_snippets" , 'UltiSnips']
"==========================================
" closetag settings 自动补全html/xml标签
"==========================================
"Bundle 'docunext/closetag.vim'
"let g:closetag_html_style=1
"==========================================
" Markdown settings
"==========================================
"Bundle 'plasticboy/vim-markdown'
"let g:vim_markdown_folding_disabled=1
"==========================================
" Tagbar settings
"==========================================
Bundle 'majutsushi/tagbar'
nnoremap <leader > tb :Tagbar <CR >
let g:tagbar_autofocus = 1
"==========================================
" A settings
"==========================================
nnoremap <F4 > :A <CR >
"==========================================
" Powerline settings
"==========================================
Bundle 'Lokaltog/vim-powerline'
let g:Powerline_symbolsa = 'fancy'
let g:Powerline_cache_enabled = 1
""let g:session_autoload='yes'
""let g:session_autosave='yes'
" 因为Vundle需要关闭filetype,而之后的插件如果想要正常使用,必须要打开filetype
" 所以必须确保所有插件的加载过程在之前已经全部添加完毕
filetype on
" 参考链接:
" amix vimrc模板地址参考:amix.dk/vim/vimrc.html
" k-vim https://github.com/wklken/k-vim
" File Name: .vimrc
" Description: Vim配置文档
"========================================
let mapleader = ','
let g:mapleader = ','
"==========================================
" General Settings
"==========================================
" 开启语法高亮
syntax enable
" 开启语法高亮
syntax on
" 设置字体
set guifont =Monaco\ 12
" 设置历史记录条数
set history = 2000
" 检测文件类型
filetype on
" 针对不同的文件,采用不同的缩进方式
filetype indent on
" 允许插件
filetype plugin on
" 启动自动补全
filetype plugin indent on
" 文件修改之后自动读入
set autoread
" 启动后不显示提示
"set shortmess=atI
" 备份,到另一个位置. 防止误删, 目前是取消备份
"set backup
"set backupext=.bak
"set backupdir=/tmp/vimbk/
" 设置取消备份,禁止临时文件生成
set nobackup
set noswapfile
" create undo file
set undolevels = 1000 " how many undos
set undoreload = 10000 " number of lines to save for undo
if v: version >= 730
set undofile " keep a persistent backup file
set undodir = /tmp/vimundo/
endif
"set wildignore=*.swp,*.bak,*.pyc,*.class,.svn
" 显示当前横竖线
"set cursorline
"set cursorcolumn
" 设置退出Vim之后内容显示在终端屏幕,可以用于查看和复制
" 好处:误删什么,如果以前屏幕打开可以用来找回
" set t_ti= t_te=
" 设置在Vim中可以使用鼠标,防止终端无法拷贝
set mouse = a
" 修复ctrl+m多光标操作选择的bug,但是改变了ctrl+v进行字符选中将包含光标下的字符
" set selection=inclusive
" set selectmode=mouse,key
" no errors sound
set title " change ther terminal's title
set novisualbell " don't beep
set noerrorbells " don't beep
set t_vb =
set tm = 500
" remember info about open buffers on close
set viminfo^ =%
" for regular expression turn magic on
set magic
" configure backspace so it acts as it should act
set backspace = eol , start ,indent
set whichwrap +=<,>, h , l
" FuzzyFinder and ctrlp couldn't auto change dir you must manual add cd in
" command mode, so add this command to auto change current dir for these
" plugins
" set autochdir
"==========================================
" Display Settings
"==========================================
"
" 显示当前行号和列号
set ruler
" 在状态栏显示正在输入的命令
set showcmd
" 左下角显示当前Vim模式
set showmode
" 光标移动至少保留的行数
"set scrolloff=7
" 命令行(在状态行下)的高度,默认为1,这里是2
set statusline =% <% f\ % h% m% r% =% k[%{(& fenc ==\ "\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ % -14.(% l ,% c%V%)\ %P
" 总是显示状态栏(Powerline需要2行)
set laststatus = 2
" 显示行号
set number
" 指定不折行
set nowrap
" 设置代码匹配,包括括号匹配情况
set showmatch
" how many tenths of a second to blink when matching brackets
" setmatchtime=2
" 开启及时搜索(is)
set incsearch
" 设置搜索高亮(hlsearch)
set hls
" 设置搜索时忽略大小写
set ignorecase
" 当搜索的时候尝试smart
set smartcase
" 设置代码折叠
"set foldenable
" 折叠方法
" manual 手工折叠
" indent 缩进折叠
" expr 表达式折叠
" syntax 语法折叠
" diff 对没有更改的文件折叠
" marker 标记折叠
"set foldmethod=indent
"set foldlevel=99
" 设置C/C++方式自动对齐
set autoindent
set cindent
set smartindent
" 设置tab宽度
set tabstop = 4
" 设置自动对齐空格数
set shiftwidth = 4
" 按退格键时可以一次删除4个空格
"set softtabstop=4
" 编辑的时候将所有的tab设置为空格(expandtab)
set et
" 使用Backspace直接删除tab
set smarttab
" 不在单词中间折行
set lbr
" 缩进时取整use multiple of shiftwidth when indenting with '<' and '>'
" set shiftround
" a buffer becomes hidden when it is abandoned
" set hidden
" set wildmode=list:longest
" set ttyfast
" 00x增减数字时使用十进制
"set nrformats=
"
"==========================================
" FileEncode Settings
"==========================================
" 设置编码方式
set encoding =utf -8
" 设置打开文件的编码格式
set fileencodings =ucs -bom ,utf -8 ,cp936 ,gb18030 ,big5 ,euc -jp ,euc -kr ,latin1
set helplang = cn
" 只对终端影响(默认)
set termencoding =utf -8
" use UNIX as the standard file type
set ffs =unix ,dos ,mac
" 如遇Unicode值大于255的文本,不必等到空格再折行。
set formatoptions += m
" 合并两行中文时,不在中间加空格:
set formatoptions +=B
"==========================================
" Other Settings
"==========================================
"autocmd! bufwritepost _vimrc source % " .vimrc修改之后自动加载(Windows)
"autocmd! bufwritepost .vimrc source % " .vimrc修改之后自动加载(Linux)
" 自动补全配置让Vim补全菜单行为跟IDE一致
set completeopt =longest ,menu
" 增强模式中的命令行自动完成操作
set wildmenu
" ignore compiled files
" set wildignore=*.o,*~,*.pyc,*.class
"离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0| pclose| endif
"回车即选中当前项
inoremap <expr > <CR > pumvisible() ? "\<C-y>" : "\<CR>"
"上下左右键的行为 会显示其他信息
inoremap <expr > <Down > pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr > <Up > pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr > <PageDown > pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
inoremap <expr > <PageUp > pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
" if this not work ,make sure .viminfo is writable for you
if has( "autocmd")
au BufReadPost * if line( "'\"") > 1 && line( "'\"") <= line( "$") | exe "normal! g'\"" | endif
endif
"==========================================
" HotKey Settings
"==========================================
"
" 去掉搜索高亮
"noremap <silent><leader>/ :nohls<CR>
map <leader >/ : nohls <CR >
map <leader > tn : tabnew < cr >
map <leader > to : tabonly < cr >
map <leader > tc : tabclose < cr >
map <leader > tm : tabmove
" Opens a new tab with the current buffer's path
" Super useful when editing files in the same directory
map <leader > te : tabedit < c - r >=expand( "%:p:h" )< cr >/
" Quickly edit/reload the vimrc file
nmap < silent > <leader >ev : e $MYVIMRC <CR >
nmap < silent > <leader > sv : so $MYVIMRC <CR >
" 手动刷新tags(含cscope)
nmap tg : !ctags -R -- c ++-kinds =+p --fields =+iaS --extra =+ q * <CR >: set tags +=. /tags<CR>:!cscope -Rbq<CR>:cs add ./ cscope.out . <CR >
" 切换buffer
nnoremap [b :bp <CR >
nnoremap ]b :bn <CR >
" cscope设置
if has( "cscope")
set csprg = /usr/ bin/ cscope " 制定cscope命令
set csto = 0 " ctags查找顺序,0表示先cscope数据库再标签文件,1表示先标签文件爱
set cst " 同时搜索tag文件和cscope数据库
set cscopequickfix =s -, c -, d -, i -, t -, e - "使用QucikFix窗口来显示cscope查找结果
set nocsverb
if filereadable( "cscope.out") "如果当前目录下有cscope.out则加载进Vim
cs add cscope.out
elseif $CSCOPE_DB != "" "否则只要环境变量不为空就添加制定的数据库到Vim
cs add $CSCOPE_DB
endif
set csverb
endif
"map <F4>:!cscope -Rbq<CR>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
" 查找符号
nmap <leader >css : cs find s <C -R >=expand( "<cword>" )<CR ><CR > : copen <CR ><CR >
" 查找定义
nmap <leader >csg : cs find g <C -R >=expand( "<cword>" )<CR ><CR >
" 查找被这个函数调用的函数
nmap <leader >csd : cs find d <C -R >=expand( "<cword>" )<CR ><CR > : copen <CR ><CR >
" 查找调用这个函数的函数
nmap <leader >csc : cs find c <C -R >=expand( "<cword>" )<CR ><CR >: copen <CR ><CR >
" 查找这个字符串
nmap <leader > cst : cs find t <C -R >=expand( "<cword>" )<CR ><CR >: copen <CR ><CR >
" 查找这个egrep匹配模式
nmap <leader >cse : cs find e <C -R >=expand( "<cword>" )<CR ><CR >: copen <CR ><CR >
" 查找这个文件
nmap <leader >csf : cs find f <C -R >=expand( "<cfile>" )<CR ><CR >
" 查找include这个文件的文件
nmap <leader >csi : cs find i <C -R >=expand( "<cfile>" )<CR ><CR > : copen <CR ><CR >
" 设定是否使用QuickFix来显示结果
set cscopequickfix =s -, c -, d -, i -, t -, e -
" QuickFix open and close
nnoremap <F11 > : copen <CR >
nnoremap <F12 > : cclose <CR >
" QucikFix next and prev
nnoremap <F9 > : cn <CR >
nnoremap <F10 > : cp <CR >
"==========================================
" Theme Settings
"==========================================
" Set extra options when running in GUI mode
"if has("gui_running")
" set guifont=Monaco\ 12
" set guioptions-=T
" set guioptions+=e
" set guioptions-=r
" set guioptions-=L
" set guitablabel=%M\ %t
" set showtabline=1
" set linespace=2
" set noimd
" set t_Co=256
"endif
" 设置主题
set background = dark
colorscheme molokai
"colorscheme solarized
set t_Co = 256
" 添加水平滚动条
"set guioptions+=b
" 取消菜单栏和导航栏
set guioptions -= m
set guioptions -=T
" 去除左右两边滚动条
set go -= r
set go -=L
" 设置水平行数和竖直列数
set lines = 35
set columns = 99
" 使pathogen生效(插件管理器,只需将插件放入bundle,将pathogen.vim放入autoload即可)
"execute pathogen#infect()
"
"==========================================
" Vundle Settings
"==========================================
" 关闭vi的一致性模式,避免以前版本的一些Bug和局限
set nocompatible
filetype off " Vundle必须要求使用filetype off,如果不设置该选项,UltiSnips无法使用
if has( 'win32') || has( 'win64')
set rtp +=$HOME /vimfiles/vundle
call vundle#rc( '$HOME/vimfiles/bundle/')
else
set rtp +=~ /.vim/bundle/vundle
call vundle#rc()
endi
" let Vundle manage Vundle
" required
Bundle 'gmarik/vundle'
" My bundles here:
" original repos on GitHub
Bundle 'tpope/vim-fugitive'
Bundle 'Lokaltog/vim-easymotion'
" 自动补全单引号,双引号等
Bundle 'Raimondi/delimitMate'
" 快速加入修改环绕字符
Bundle 'tpope/vim-surround'
" for repeat -> enhance surround.vim, . to repeat command
Bundle 'tpope/vim-repeat'
" 多光标编辑 (该插件的ctrl-p可以正常使用,当到达最后一个的时候ctrlp才会起作用)
Bundle 'terryma/vim-multiple-cursors'
" 对括号等进行光标的控制辅助
"Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
"Bundle 'tpope/vim-rails.git'
Bundle 'Valloric/ListToggle'
Bundle 'L9'
" vim-scripts repos
Bundle 'a.vim'
Bundle 'grep.vim'
"Bundle 'easytags.vim'
"Bundle 'c.vim'
" non-GitHub repos
"Bundle 'git://git.wincent.com/command-t.git'
" Git repos on your local machine (i.e. when working on your own plugin)
"Bundle 'file:///Users/gmarik/path/to/plugin'
"==========================================
" ctrlp settings
"==========================================
Bundle 'kien/ctrlp.vim'
"let g:ctrlp_map = '<leader>p'
"let g:ctrlp_cmd = 'CtrlP'
"map <leader>f :CtrlPMRU<CR>
"set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux
"let g:ctrlp_custom_ignore = {
" \ 'dir': '\v[\/]\.(git|hg|svn|rvm)$',
" \ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz)$',
" \ 'link': 'SOME_BAD_SYMBOLIC_LINKS',
" \ }
let g:ctrlp_custom_ignore = {
\ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|lib|out|png|img|bak|db|o)'
\ }
" 在每次进行切换分支或者重新设定custome_ignore选项的时候,必须手动清除CtrlP的缓存,
" 也可以使用下句不让它进行缓存处理,但扫描时间会比较耗时
"let g:ctrlp_use_caching = 0
let g:ctrlp_working_path_mode = 0
let g:ctrlp_match_window_bottom = 1
let g:ctrlp_max_height = 15
let g:ctrlp_match_window_reversed = 0
let g:ctrlp_mruf_max = 500
let g:ctrlp_follow_symlinks = 1
nnoremap <leader >b :CtrlPBuffer <CR >
nnoremap <leader > d :CtrlPDir <CR >
"==============================================================
" ctrlp-funky settings ctrlp插件 - 不用ctag进行函数快速跳转
"==============================================================
Bundle 'tacahiroy/ctrlp-funky'
"nnoremap <Leader>fu :CtrlPFunky<Cr>
nnoremap <Leader > f :CtrlPFunky <Cr >
" narrow the list down with a word under cursor
"nnoremap <Leader>fU :execute 'CtrlPFunky ' . expand('<cword>')<Cr>
let g:ctrlp_funky_syntax_highlight = 1
let g:ctrlp_extensions = [ 'funky']
"==========================================
" nerdcommenter settings 快速注释
"==========================================
Bundle 'scrooloose/nerdcommenter'
" 注释与代码之间留存的空格数
let g:NERDSpaceDelims = 1
"==========================================
" Airline settings
"==========================================
"Bundle 'bling/vim-airline'
"Bundle 'bling/vim-bufferline'
"if !exists('g:airline_symbols')
"let g:airline_symbols = {}
"endif
"let g:airline_left_sep = '▶'
"let g:airline_left_alt_sep = ''
"let g:airline_right_sep = '◀'
"let g:airline_right_alt_sep = ''
"let g:airline_symbols.linenr = '¶'
"let g:airline_symbols.branch = '⎇'
"" 开启tabline
"let g:airline#extensions#tabline#enabled = 1
"" tabline中当前buffer两端的分隔符
"let g:airline#extensions#tabline#left_sep = ' '
"" tabline为激活的buffer的两端字符
"let g:airline#extensions#tabline#left_alt_sep = '|'
"" tabline中buffer显示编号
"let g:airline#extensions#tabline#buffer_nr_show = 1
"let g:airline#extensions#buffline#enabled = 1
"let g:airline#extensions#bufferline#overwrite_variables = 1
"" airline主题
"let g:airline_theme = 'powerlineish'
"括号显示增强
"Bundle 'kien/rainbow_parentheses.vim'
"let g:rbpt_colorpairs = [
" \ ['brown', 'RoyalBlue3'],
" \ ['Darkblue', 'SeaGreen3'],
" \ ['darkgray', 'DarkOrchid3'],
" \ ['darkgreen', 'firebrick3'],
" \ ['darkcyan', 'RoyalBlue3'],
" \ ['darkred', 'SeaGreen3'],
" \ ['darkmagenta', 'DarkOrchid3'],
" \ ['brown', 'firebrick3'],
" \ ['gray', 'RoyalBlue3'],
" \ ['black', 'SeaGreen3'],
" \ ['darkmagenta', 'DarkOrchid3'],
" \ ['Darkblue', 'firebrick3'],
" \ ['darkgreen', 'RoyalBlue3'],
" \ ['darkcyan', 'SeaGreen3'],
" \ ['darkred', 'DarkOrchid3'],
" \ ['red', 'firebrick3'],
" \ ]
"let g:rbpt_max = 40
"let g:rbpt_loadcmd_toggle = 0
"au VimEnter * RainbowParenthesesToggle
"au Syntax * RainbowParenthesesLoadRound
"au Syntax * RainbowParenthesesLoadSquare
"au Syntax * RainbowParenthesesLoadBraces
" 主题 solarized
Bundle 'altercation/vim-colors-solarized'
"let g:solarized_termcolors=256
let g:solarized_termtrans = 1
let g:solarized_contrast = "normal"
let g:solarized_visibility = "normal"
" 主题 molokai
Bundle 'tomasr/molokai'
"==========================================
" TagList settings
"==========================================
Bundle 'taglist.vim'
" increase the width of the taglist window
"let Tlist_WinWidth=20
" 自动打开TagList的window
let Tlist_Auto_Open = 0
" 当只剩下Tlist的时候自动关闭
let Tlist_Exit_OnlyWindow = 1
" 打开tags用单击
let Tlist_Use_SingleClick = 1
" close tag folders for inactive buffers
let Tlist_File_Fold_Auto_Close = 1
" show the fold indiactor column in the taglist window
let Tlist_Enable_Fold_Column = 1
" 自动更新TagList包含最新编辑的文件
let Tlist_Auto_Update = 1
" 显示一个文件的tag
let Tlist_Show_One_File = 1
" 在右侧显示窗口
let Tlist_Use_Right_Window = 1
" 按照名称排序
let Tlist_Sort_Type = "name"
" 让TagList始终解释文件中的tag,不管TagList窗口有没有打开
let Tlist_Process_File_Always = 1
" 设置leader键
nnoremap <leader > tl :TlistToggle <CR >
"==========================================
" YouCompleteMe settings
"==========================================
Bundle 'Valloric/YouCompleteMe'
"let g:ycm_key_list_select_completion=['<c-n>']
"let g:ycm_key_list_previous_completion=['<c-p>']
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py'
let g:ycm_collect_indentifiers_from_tags_files = 1
let g:ycm_seed_identifiers_with_syntax = 1
" 避免YCM每次加载都对用户提示是否加载
let g:ycm_confirm_extra_conf = 0
let g:ycm_autoclose_preview_window_after_completion = 1
let g:ycm_complete_in_comments = 1 "在注释输入中也能补全
let g:ycm_complete_in_strings = 1 "在字符串输入中也能补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 "注释和字符串中的文字也会被收入补全
" 跳到定义或声明
nnoremap <F2 > :YcmCompleter GoToDefinitionElseDeclaration <CR >
" 强制进行编译
nnoremap <F5 > :YcmForceCompileAndDiagnostics <CR >
"==========================================
" Syntastic settings
"==========================================
Bundle 'scrooloose/syntastic'
" 在打开文件的时候检查
let g:syntastic_check_on_open = 1
let g:syntastic_cpp_include_dirs = [ '/usr/include/']
let g:syntastic_cpp_remove_include_errors = 1
let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = '-std=c++11 -stdlib=libstdc++'
"set error or warning signs
let g:syntastic_error_symbol = ''
let g:syntastic_warning_symbol = ''
"whether to show balloons
let g:syntastic_enable_balloons = 1
let g:syntastic_always_populate_loc_list = 1
"==========================================
" ListToggle settings
"==========================================
let g:lt_location_list_toggle_map = '<leader>l'
let g:lt_quickfix_list_toggle_map = '<leader>q'
"==========================================
" NERDtree settings
"==========================================
Bundle 'scrooloose/nerdtree'
let NERDTreeWinPos = 'left'
let NERDTreeHighlightCursorline = 1
nnoremap <leader >n :NERDTreeToggle <CR >
autocmd bufenter * if (winnr( "$") == 1 && exists( "b:NERDTreeType") &&b:NERDTreeType == "primary") | q | endif
"==========================================
" miniBufExpl settings
"==========================================
"Bundle 'fholgado/minibufexpl.vim'
"let g:miniBufExplMapWindowNavVim = 1
"let g:miniBufExplMapWindowNavArrows = 1
"let g:miniBufExplMapCTabSwitchBufs = 1
"let g:miniBufExplModSelTarget = 1
""解决FileExplorer窗口变小问题
"let g:miniBufExplForceSyntaxEnable = 1
"let g:miniBufExplorerMoreThanOne=2
"let g:miniBufExplCycleArround=1
"" 默认方向键左右可以切换buffer
"nnoremap <TAB> :MBEbn<CR>
"nnoremap <s-TAB> :MBEbp<CR>
"noremap <leader>bn :MBEbn<CR>
"noremap <leader>bp :MBEbp<CR>
"noremap <leader>bd :MBEbd<CR>
"==========================================
" FuzzyFinder settings
"==========================================
"Bundle 'FuzzyFinder'
"nnoremap <leader>f :FufFile<CR>
"nnoremap <leader>b :FufBuffer<CR>
"nnoremap <leader>d :FufDir<CR>
"==========================================
" UltiSnips settings
"==========================================
Bundle 'SirVer/ultisnips'
Bundle 'honza/vim-snippets'
let g:UltiSnipsExpandTrigger = "<c-j>"
let g:UltiSnipsJumpForwardTrigger = "<c-j>"
let g:UltiSnipsJumpBackwardTrigger = "<c-k>"
" 定义存放代码片段的文件夹 .vim/additional_snippets下,使用自定义和默认的,将会的到全局,有冲突的会提示
let g:UltiSnipsSnippetDirectories =[ "additional_snippets" , 'UltiSnips']
"==========================================
" closetag settings 自动补全html/xml标签
"==========================================
"Bundle 'docunext/closetag.vim'
"let g:closetag_html_style=1
"==========================================
" Markdown settings
"==========================================
"Bundle 'plasticboy/vim-markdown'
"let g:vim_markdown_folding_disabled=1
"==========================================
" Tagbar settings
"==========================================
Bundle 'majutsushi/tagbar'
nnoremap <leader > tb :Tagbar <CR >
let g:tagbar_autofocus = 1
"==========================================
" A settings
"==========================================
nnoremap <F4 > :A <CR >
"==========================================
" Powerline settings
"==========================================
Bundle 'Lokaltog/vim-powerline'
let g:Powerline_symbolsa = 'fancy'
let g:Powerline_cache_enabled = 1
""let g:session_autoload='yes'
""let g:session_autosave='yes'
" 因为Vundle需要关闭filetype,而之后的插件如果想要正常使用,必须要打开filetype
" 所以必须确保所有插件的加载过程在之前已经全部添加完毕
filetype on
" 参考链接:
" amix vimrc模板地址参考:amix.dk/vim/vimrc.html
" k-vim https://github.com/wklken/k-vim
--------------------------------------------------------- End.
转载请注明:http://www.cnblogs.com/crazyacking/