个人认为~/.vimrc文件是vim使用的精髓所在,故几下自己的~/.vimrc文件于此!("后面为注释)
其中有些,我自己也不知道具体有什么效果!各位,自己看着办……
在有一个非常强大的vimrc,有人戏称为”史上最强的vimrc”,或许有些言过其实。不过,如果你通读了这个vimrc,相信能从中学到很多……
================================================================================
"*********************************************************************
" 全局控制
"*********************************************************************
"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocompatible
"检测文件的类型
filetype plugin indent on
"修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀
if has("vms")
set nobackup
else
set backup
endif
"在使用VIM打开文件,自动忽略以.bak,.o等结尾文件
set suffixes=.bak,~,.o,.info
" Ignore compiled files
set wildignore=*.o,*~,*.pyc
"当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声
"set vb t_vb=
"设置鼠标可用
set mouse=v
"区分大小写
syntax case match
"*********************************************************************
" 显示控制
"*********************************************************************
"显示当前正在编辑的文件
set statusline+=%f
"背景使用黑色
" set background=dark
"开启模式显示
set showmode
"强调光标所在行
set cursorline
"命令部分高度为1
set cmdheight=1
"在编辑过程中,在右下角显示光标位置的状态行
set ruler
"打开高亮
syntax on
"指定配色方案是256色
set t_Co=256
"vim配色
color evening
"显示行号
set nu
"高亮显示结果
set hlsearch
"默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示
"set nohls
"显示括号匹配
set showmatch
"括号匹配显示时间为1(单位是十分之一秒)
set matchtime=2
"*********************************************************************
" 编码控制
"*********************************************************************
"将VIM内部编码格式默认UTF-8
set fenc=utf-8
"当新建一个文件时,默认编码UTF-8
set fileencodings=ucs-bom,utf-8,cp936
"默认双字节处理特殊字符
if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
set ambiwidth=double
endif
"字体的设置
set guifont=Bitstream_Vera_Sans_Mono:h9:cANSI
set g f w(注:去掉词中空格)=幼圆:h10:cGB2312
"*********************************************************************
" 格式控制
"*********************************************************************
"在输入要搜索的文字时,vim实现自动匹配
set incsearch
"配置退格键的方案使用(Configure backspace so it acts as it should act)
set backspace=indent,eol,start
set whichwrap+=<,>,[,],h,l
"允许退格键删除
" set backspace=2
"按C语言格式缩进
set cindent
"继承前一行的缩进方式,特别适用于多行注释(or set ai)
set autoindent
"智能缩进
set smartindent
"当文件在外部被改变时,Vim自动更新载入
set autoread
"设置自动缩进 4 个空格, 当然要设自动缩进先
set shiftwidth=4
"即设置 softtabstop 为 4. 输入 tab 后就跳了 4 格
set sts=4
" 实际的 tab 即为 4 个空格, 而不是缺省的 8 个
set tabstop=4
" 在输入 tab 后, vim 用恰当的空格来填充这个 tab
set expandtab
"*********************************************************************
" Tag list (ctags) configure
"*********************************************************************
"设定windows系统中ctags程序的位置
" if MySys() == "windows"
" let Tlist_Ctags_Cmd = 'ctags'
"设定linux系统中ctags程序的位置
" elseif MySys() == "linux"
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
" endif
"不同时显示多个文件的tag,只显示当前文件的,缺省为显示多个文件中的tag
" let Tlist_Show_One_File = 1
"当同时显示多个文件中的tag时,使taglist只显示当前文件tag,其它文件的tag都被折叠起来
let Tlist_File_Fold_Auto_Close = 1
"打开taglist窗口时,输入焦点在taglist窗口中
let Tlist_GainFocus_On_ToggleOpen = 1
"taglist始终解析文件中的tag,不管taglist窗口有没有打开
let Tlist_Process_File_Always = 1
"如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Exit_OnlyWindow = 1
"在右侧窗口中显示taglist窗口 缺省显示在左侧
" let Tlist_Use_Right_Window = 1
"在启动vim后,自动打开taglist窗口
" let Tlist_Auto_Open = 1
"设置taglist窗口的宽度
" let Tlist_WinWidth = 25
"设置taglist窗口的高度
" let Tlist_WinHeight = 100
"用”:TlistToggle“在打开和关闭taglist窗口之间切换
"定义映射,用键就可以打开/关闭taglist窗口
map :TlistToggle
"*********************************************************************
" omnicppcomplete 补全插件配置
"*********************************************************************
"关闭omnicppcomplete会打开的预览窗口
set completeopt=menu
"*********************************************************************
" NERD_commenter.vim 注释插件配置
"*********************************************************************
let mapleader = " "
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" lookupfile setting
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:LookupFile_MinPatLength = 2 "最少输入2个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0 "不保存上次查找的字符串
let g:LookupFile_PreservePatternHistory = 1 "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1 "回车打开第一个匹配项目
let g:LookupFile_AllowNewFiles = 0 "不允许创建不存在的文件
"if filereadable("./filenametags") "设置tag文件的名字
"let g:LookupFile_TagExpr = '"./filenametags"'
"endif
"映射LookupFile为,lk
nmap lk :LUTags
"映射LUBufs为,ll
nmap ll :LUBufs
"映射LUWalk为,lw
nmap lw :LUWalk
" close lookupfile window by two
"nnoremap q
"inoremap q
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" BufExplorer
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:bufExplorerFindActive=1 " Go to active window.
let g:bufExplorerDefaultHelp=0 " Do not show default help.
let g:bufExplorerShowRelativePath=0 " Show relative paths.
let g:bufExplorerSortBy='mru' " Sort by most recently used.
let g:bufExplorerSplitRight=0 " Split left.
let g:bufExplorerSplitVertical=1 " Split vertically.
let g:bufExplorerSplitVertSize = 10 " Split width
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" winManager setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:winManagerWindowLayout = "FileExplorer,BufExplorer|TagList"
let g:persistentBehaviour = 0 "when all file quit ,the winmanager will quit
let g:winManagerWidth = 30
" let g:defaultExplorer = 0
map :FirstExplorerWindow
map :BottomExplorerWindow
map :WMToggle "映射F8呼出winmanager
"*********************************************************************
" ctag,cscope设置
"*********************************************************************
"根据tags文件生成高亮文件tags.vim
map map :sp tags:set nohls:%s/\s.*$//:%s/^/syntax keyword Tag /:wq! tags.vim:so tags.vim
"高亮文件里的所有标签
function Loadtags()
:so tags.vim
endfunction
map :so tags.vim
"设置自动关联打开文件就高亮标签
au BufRead,BufNewFile *.cpp,*.h,*.c call Loadtags()
"cscope 映射键设置
nmap s :cs find s =expand("")
nmap g :cs find g =expand("")
nmap c :cs find c =expand("")
nmap t :cs find t =expand("")
nmap e :cs find e =expand("")
nmap f :cs find f =expand("")
nmap i :cs find i ^=expand("")$
nmap d :cs find d =expand("")
"让vim去自动搜索并加载标签文件
set tags=./tags;
"自动向上20层寻找标签文件的目录
function RegenTag()
let i = 0
while i < 20
if filereadable("cscope.out")
let db = getcwd()
"echo db
let $CSCOPE_DB = db
silent! execute "!vimbuildproject ./"
let i = 25
else
cd ..
let i += 1
endif
endwhile
:so tags.vim
endfunction
"设置自动关联,保存C++,头文件,C文件的时候调用 RegenTag()
au BufWritePost,FileWritePost *.cpp,*.h,*.c call RegenTag()
"*********************************************************************
" auto sv and ld session
"*********************************************************************
let g:AutoSessionFile=".vim_save"
let g:OrigPWD=getcwd()
if filereadable(g:AutoSessionFile)
" if argc() == 0
au VimEnter * call EnterHandler()
au VimLeave * call LeaveHandler()
" endif
else
" silent! execute "!touch ./.vim_save"
au VimEnter * call EnterHandler()
au VimLeave * call LeaveHandler()
endif
function! EnterHandler()
" exe "source ".g:AutoSessionFile
" :call Do_CsTag()
endfunction
function! LeaveHandler()
" exec "mks! ".g:OrigPWD."/".g:AutoSessionFile
" :call Del_CsTag()
endfunction
======================================================================================
vimbuildproject 脚本(放到/usr/bin/下)
#!/bin/bash
CSCOPE_FILE=cscope.out
if [ -n "$1" ]; then
echo "project directory: " $1
echo "Create file map : " $CSCOPE_FILE
cd $1
find . -name "*.h" -o -name "*.c" -o -name "*.cpp" > $CSCOPE_FILE
cscope -Rbkq -i $CSCOPE_FILE
# cscope -Rbkq
ctags --langmap=c:+.h --languages=c,c++ -R --c-types=+p --c-kinds=+p --fields=+S *
ctags --langmap=c:+.h --languages=c,c++ -R --c++-kinds=+p --fields=+iaS --extra=+q
# --languages=c,c++ :表示只扫描c和c++文件。
#--langmap=c:+.h :
表示将.h文件看成c文件,并以c语法扫描.h文件
else
echo "Please key-in path of project and source code dir"
rm -rf cscope.* tags
fi
阅读(1154) | 评论(0) | 转发(0) |