刚开始用Vim不久,特别喜欢倒腾它,记录下自己的.vimrc文件。只是些简单的配置。如下:
bundle包管理器下载:
mkdir -p ~/.vim/bundle/vundle
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
vim ~/.vimrc
复制下面内容到vimrc文件中。
set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'
" My Bundles here: /* 插件配置格式 */
Bundle 'scrooloose/nerdtree'
Bundle 'majutsushi/tagbar'
Bundle 'Lokaltog/vim-powerline'
Bundle 'fholgado/minibufexpl.vim'
Plugin 'kien/ctrlp.vim'
Plugin 'scrooloose/nerdcommenter'
Bundle 'Valloric/YouCompleteMe'
"Bundle 'klen/python-mode'
" original repos on github
"Bundle 'tpope/vim-fugitive'
"Bundle 'Lokaltog/vim-easymotion'
"Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
"Bundle 'tpope/vim-rails.git'
" vim-scripts repos (vim-scripts仓库里的,按下面格式填写)
"Bundle 'L9'
"Bundle 'FuzzyFinder'
" non github repos
"Bundle 'git://git.wincent.com/command-t.git'
filetype plugin indent on " required! /** vimrc文件配置结束 **/
" /** vundle命令 **/
" Brief help
":BundleList - list configured bundles
":BundleInstall(!) - install(update) bundles
":BundleSearch(!) foo - search(or refresh cache first) for foo
":BundleClean(!) - confirm(or auto-approve) removal of unused bundles
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle command are not allowed..
filetype on
"=============NERDcommenter============
"使用:
"1、 \cc 注释当前行和选中行
"2、 \cn 没有发现和\cc有区别
"3、 \c<空格> 如果被选区域有部分被注释,则对被选区域执行取消注释操作,其它情况执行反转注释操作
"4、 \cm 对被选区域用一对注释符进行注释,前面的注释对每一行都会添加注释
"5、 \ci 执行反转注释操作,选中区域注释部分取消注释,非注释部分添加注释
"6、 \cs 添加性感的注释,代码开头介绍部分通常使用该注释
"7、 \cy 添加注释,并复制被添加注释的部分
"8、 \c$ 注释当前光标到改行结尾的内容
"9、 \cA 跳转到该行结尾添加注释,并进入编辑模式
"10、\ca 转换注释的方式,比如: /**/和//
"11、\cl \cb 左对齐和左右对其,左右对其主要针对/**/
"12、\cu 取消注释
"=============CtrlP============
"ctrl + j/k 进行上下选择
"ctrl + x 在当前窗口水平分屏打开文件
"ctrl + v 同上, 垂直分屏
"ctrl + t 在tab中打开
"<leader>-p模糊搜索当前目录及其子目录下的所有文件
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn|rvm)$',
\ 'file': '\v\.(exe|so|dll|zip|tar|tar.gz|pyc)$',
\ }
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
"=============NERDTree============
map <F3> :NERDTreeMirror<CR>
map <F3> :NERDTreeToggle<CR>
let NERDChristmasTree=0
let NERDTreeWinSize=30
let NERDTreeChDirMode=2
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
let NERDTreeWinPos="left"
let NERDTreeShowBookmarks=1
"--- Automatically open a NERDTree if no files where specified
"autocmd vimenter * if !argc() | NERDTree | endif
"turn off vim when only nerdtree window last.
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
let g:NERDTreeMapOpenSplit = 's'
let g:NERDTreeMapOpenVSplit = 'v'
"o 打开关闭文件或者目录
"t 在标签页中打开
"T 在后台标签页中打开
"! 执行此文件
"p 到上层目录
"P 到根目录
"K 到第一个节点
"J 到最后一个节点
"u 打开上层目录
"m 显示文件系统菜单(添加、删除、移动操作)
"? 帮助
"q 关闭
"=============Tagbar============
nnoremap <silent> <F9> :TagbarToggle<CR>
let g:tagbar_width=30
let g:tagbar_autofocus=1
let g:tagbar_sort = 0
let g:tagbar_autoshowtag = 1
"=============CTags============
"set tags=tags
"==============minibufexpl===========
"<Tab> 切换buffer
"左右方向键 切换buffer
"bn 切到后一个
"bp 切到前一个
"bd 关闭当前buffer
"--- 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
"--- 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer
let g:miniBufExplModSelTarget = 1
"用法:
"<Tab> 移到上一个buffer
"<Shift-Tab> 移到下一个buffer
"<Enter> 打开光标所在的buffer
"=============YouCompleteMe============
let g:ycm_global_ycm_extra_conf = "~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py"
"--- 不显示每次加载配置文件的提示
let g:ycm_confirm_extra_conf = 0
let g:ycm_auto_trigger = 1
let g:ycm_error_symbol = '>>'
let g:ycm_warning_symbol = '>*'
let g:ycm_autoclose_preview_window_after_completion = 1
let g:ycm_autoclose_preview_window_after_insertion = 1
""--- 跳转到声明
nnoremap <leader>gl :YcmCompleter GoToDeclaration<CR>
"--- 跳转到定义
nnoremap <leader>gf :YcmCompleter GoToDefinition<CR>
""--- 跳转到两者的合体
nnoremap <leader>gg :YcmCompleter GoToDefinitionElseDeclaration<CR>
"--- 命令 :YcmDiags 可以打开location-list查看警告和错误信息
nnoremap <F4> :YcmDiags<CR>
inoremap <c-o> <c-x><c-o>
""--- 在注释输入中也能补全
let g:ycm_complete_in_comments = 1
"--- 在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
""--- 注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 0
"--- 让Vim的补全菜单行为与一般IDE一致
set completeopt=longest,menu
""--- 离开插入模式后自动关闭预览窗口
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
"回车即选中当前项"
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
""--- 从第2个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=1
"--- 禁止缓存匹配项,每次都重新生成匹配项
" let g:ycm_cache_omnifunc=0
"--- 语法关键字补全
let g:ycm_seed_identifiers_with_syntax=1
""--- 设置在下面几种格式的文件上屏蔽ycm
let g:ycm_filetype_blacklist = {
\ 'tagbar' : 1,
\ 'nerdtree' : 1,
\}
"=============Vim UI============
set encoding=utf-8
set nu
"set number
set showcmd
"set cursorline
"set cursorcolumn
set autoindent
set cindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
set ignorecase
set hlsearch
set incsearch
set laststatus=2
set cmdheight=2
set scrolloff=3
syntax enable
syntax on
set t_Co=256
colorscheme molokai
let g:molokai_original=1
"set background=dark
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
"Quickly Run
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 "!time python2.7 %"
elseif &filetype == 'html'
exec "!firefox % &"
elseif &filetype == 'go'
exec "!time go run %"
elseif &filetype == 'mkd'
exec "!~/.vim/markdown.pl % > %.html &"
exec "!firefox %.html &"
endif
endfunc