天天看点

my vimrcmy vimrc

my vimrc

用了vim这么久,反复实践,配置添添删删,终于形成自己最习惯的样式,到现在已经好久没更改配置了。
""""""""" 文件编码配置 """""""""""""""""""""""""""""""""""""""""""""""""""""""
set encoding=utf-  " vim内部编码方式
set fenc=utf-      " 创建新文件时默认编码为utf-8, fileencoding指vim解析出来的当前文件编码
set fileencodings=ucs-bom,utf-,cp936,gb18030,big5,euc-jp,euc-kr,latin1 " vim解析文件时猜测的编码格式顺序列表, cp936是gbk编码


""""""""" 显示相关 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set nu              " 显示行号
set cursorline  " 突出显示当前行
set fillchars=vert:\ ,stl:\ ,stlnc:\    " 分屏时在屏间显示空白而非虚线,更好看一些
set cmdheight= " 设置末行(状态条下面)高度
let g:molokai_original =   " 配色方案
colorscheme molokai

" 状态行显示的内容
" 编码方式:[%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]
" 时间    :%{strftime(\"%Y.%m.%d\ \ \ %H:%M\")}
set statusline=%F%m%r%h%w\ \ \ \ [%{&ff}]\ [%Y]\ [%{(&fenc==\"\")?&enc:&fenc}%{(&bomb?\",BOM\":\"\")}]\ \ \ \ %{strftime(\"%Y.%m.%d\ \ \ %H:%M\")}%=%l/%L,\ Column:%c\ [%p%%]
set laststatus=    " 启动显示状态行(1),总是显示状态行(2)


"""""""""" 新文件插入内容配置 """""""""""""""""""""""""""""""""""""""""""""""""""
filetype on     "侦测文件类型
" 为特定文件类型载入相关缩进文件
filetype indent on
filetype plugin indent on   "启用智能补全

autocmd BufNewFile,BufRead *.pc set filetype=c  " 把.pc文件类型视为c语言文件。所以函数SetTitle中filetype=='proc'就不起作用了

" 新建.c,.h,.sh,.java文件,自动插入文件头 
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java,*.pc exec ":call SetTitle()" 
" 定义函数SetTitle,自动插入文件头 
func SetTitle() 
" 如果文件类型为.sh文件 
if &filetype == 'sh'
    call setline(,"\#########################################################################") 
        call append(line("."), "\# File Name: ".expand("%")) 
        call append(line(".")+, "\# Author: ") 
        call append(line(".")+, "\# mail:") 
        call append(line(".")+, "\#Created Time:".strftime("%c")) 
        call append(line(".")+, "\#########################################################################") 
        call append(line(".")+, "\#!/bin/bash") 
        call append(line(".")+, "") 
else 
        call setline(, "/*************************************************************************") 
        call append(line("."), "    > File Name: ".expand("%")) 
        call append(line(".")+, "    > Author: ") 
        call append(line(".")+, "    > Mail:  ") 
        call append(line(".")+, "    > Created Time: ".strftime("%c")) 
        call append(line(".")+, " ************************************************************************/") 
        call append(line(".")+, "")
endif
if &filetype == 'cpp'
        call append(line(".")+, "#include<iostream>")
        call append(line(".")+, "")
endif
if &filetype == 'c'
        call append(line(".")+, "#include<stdio.h>")
        call append(line(".")+, "")
endif
if &filetype == 'proc'  " proc是.pc文件的类型,在filetype.vim中查看
        call append(line(".")+, "")
endif
" 新建文件后,自动定位到文件末尾
autocmd BufNewFile * normal G
endfunc 


"""""""""" 配置 """"""""""""""""""""""""""""""""""""""""""""""""""""
"set paste      " 粘贴时保持格式,副作用:导致自动缩进无效
set autoindent  " 自动缩进,即为新行添加与本行同等的缩进
set smartindent " 基于autoindent的一些改进
set cindent     " 使用C语言的自动缩进方式

set tabstop=   " Tab键宽度
" 统一缩进为4
set softtabstop=
set shiftwidth=
set noexpandtab " 不要用空格代替制表符
" 禁止生成临时文件
set nobackup    " 覆盖文件时不备份
set noswapfile  " 编辑时不产生交换文件
set lbr     " 不会把一个单词分成两半进行换行
" 带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=
autocmd BufNewFile,BufRead * setfiletype txt    " 把不知道的文件后缀格式视为txt
set autoread    " 文件修改之后自动载入
set autowrite   " 自动保存
set wildmenu    " 增强命令行自动补全功能,会增加一个自动补全列表
set completeopt=longest,menu    " 给出代码补全列表时,选择代码并按回车键确认后才会改变代码
set report=    " 通过末行模式所在的行通知我们:文件的哪一行被改变过
:set makeprg=g++\ -Wall\ \ %    " make设置
"set magic      " 设置魔术,打开后正则表达式用起来很难受

" Tab符用高亮竖线显示
set list
set listchars=tab:\|\ ,

set noignorecase" 搜索时大小写敏感
" 这两行表示搜索逐字符高亮
set hlsearch
set incsearch


""""""""""" vundle配置 """""""""""""""""""""""""""""""""""""""""""""""""""""""
set rtp+=/home/he/.vim/bundle/vundle/   " 设置vundle路径。这句话在vimrc中的话,/home/he/必须用绝对路径,不能用~,否则root用户找不到路径
call vundle#rc()

" let Vundle manage Vundle
Bundle 'gmarik/vundle'

" My Bundles here:
"
" original repos on github
" github上的用户写的插件,使用这种用户名+repo名称的方式
" Bundle 'tpope/vim-fugitive'
" Bundle 'Lokaltog/vim-easymotion'
" Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
" Bundle 'tpope/vim-rails.git'
" vim-scripts repos
" vimscripts的repo使用下面的格式,直接是插件名称
Bundle 'taglist'
"Bundle 'SuperTab'
"Bundle 'vimwiki'
Bundle 'winmanager'
"Bundle 'bufexplorer.zip'
Bundle 'The-NERD-tree'
"Bundle 'matrix.vim--Yang'
"Bundle 'FencView.vim'
"Bundle 'Conque-Shell'
"Bundle 'Vimpress'
"Bundle 'Markdown'
"Bundle 'LaTeX-Suite-aka-Vim-LaTeX'
"Bundle 'c.vim'     "如果有这个插件的话,会给.c文件默认添加一些信息,如文件作者,创建日期等
"Bundle 'snipMate'
"Bundle 'echofunc'

" non github reposo
" 非github的插件,可以直接使用其git地址
" Bundle 'git://git.wincent.com/command-t.git'
" ...

"
" 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
"vundle主要就是上面这个四个命令,例如BundleInstall是全部重新安装,BundleInstall!则是更新
"一般安装插件的流程为,先BundleSearch一个插件,然后在列表中选中,按i安装
" 安装完之后,在vimrc中,添加Bundle'XXX',使得bundle能够加载,这个插件,同时如果
" 需要配置这个插件,也是在vimrc中设置即可
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Bundle command are not allowed..


"""""""""" CTags配置 """""""""""""""""""""""""""""""""""""""""""""""""""""""""
let Tlist_Sort_Type = "name"    " 按照名称排序  
let Tlist_Use_Right_Window =   " 在右侧显示窗口  
let Tlist_Compart_Format =     " 压缩方式  
let Tlist_Exist_OnlyWindow =   " 如果只有一个buffer,kill窗口也kill掉buffer  
let Tlist_File_Fold_Auto_Close =   " 不要关闭其他文件的tags  
let Tlist_Enable_Fold_Column =     " 不要显示折叠树  
"let Tlist_Show_One_File=1            "不同时显示多个文件的tag,只显示当前文件的

""""这两行对tags文件进行设置:递归查找
set tags=tags;  " 分号不能省略
set autochdir   " 这两句表示如果在当前目录里没找到tags文件,就递归到父目录中查找,一直向上递归

set tags+=/home/he/.vim/systags " /home/he/.vim/systags为我手动生成的系统库的tags


"""""""""" Taglist配置 """""""""""""""""""""""""""""""""""""""""""""""""""""""
let Tlist_Auto_Open=   " 0表示默认关闭Taglist
"""""""""""""""""""""""""""""" 
" Tag list (ctags) 
"""""""""""""""""""""""""""""""" 
let Tlist_Ctags_Cmd = '/usr/bin/ctags'  " ctags安装路径
let Tlist_Show_One_File =      " 不同时显示多个文件的tag,只显示当前文件的 
let Tlist_Exit_OnlyWindow =    " 如果taglist窗口是最后一个窗口,则退出vim 
let Tlist_Use_Right_Window =   " 在右侧窗口中显示taglist窗口
" minibufexpl插件的一般设置
let g:miniBufExplMapWindowNavVim = 
let g:miniBufExplMapWindowNavArrows = 
let g:miniBufExplMapCTabSwitchBufs = 

let g:miniBufExplModSelTarget = 


"""""""""""" WinManger插件配置 """""""""""""""""""""""""""""""""""""""""""""""
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
let g:winManagerWidth =   " 设置WinManger宽度