Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1247706
  • 博文数量: 261
  • 博客积分: 4196
  • 博客等级: 上校
  • 技术积分: 3410
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-17 17:05
文章分类

全部博文(261)

文章存档

2018年(1)

2017年(22)

2016年(2)

2015年(8)

2014年(27)

2013年(40)

2012年(161)

分类: LINUX

2012-08-22 17:08:40

    个人认为~/.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
阅读(1148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~