Chinaunix首页 | 论坛 | 博客
  • 博客访问: 329211
  • 博文数量: 49
  • 博客积分: 653
  • 博客等级: 上士
  • 技术积分: 646
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-01 22:43
文章分类

全部博文(49)

文章存档

2018年(1)

2017年(4)

2015年(1)

2014年(6)

2013年(8)

2012年(24)

2011年(5)

分类: LINUX

2015-02-28 17:49:15



vim 配置


1   语言设置
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8


2
" 空格替代tab
set tabstop=4   " 设置制表符(tab键)的宽度
set softtabstop=4     " 设置软制表符的宽度   
set shiftwidth=4    " (自动) 缩进使用的4个空格
set expandtab
set showcmd         
set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行




set nocompatible  "不需要使用vi 兼容模式   
set nu!
set cindent            " 使用 C/C++ 语言的自动缩进方式


set history=1000
set autoindent " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置
set t_Co=256
colorscheme vividchalk   " 配色方案


3  相关插件
3.1 ctags 下载
1 下载地址
2 编译   ./configure --prefix=/home/users/.vim/local/ctags58/
        make  && make install
3 使用方式  c/c++
3.1 ctags -R --kinds-c++=+p --fields=+iaS --extra=+q --langmap=c++:+.inl .
    ctags -R --fields=+iaS --extra=+q *
3.2 对ACE代码生成tags
    ACE是一个很棒的c++网络库,我刚开始用vim的时候就用ctags -R . 简单对ACE库进行处理过,但是后来在使用的过程中,
    我发现有些函数居然跳转tags,后来发现有些函数它放在.inl文件中,而ctags,则自动忽略了对.inl文件的检测,
    我用了--langmap选项以后,这个问题就解决了。
    ctags -R --langmap=c++:+.inl . 
    这个选项是说,除了普通的c++文件(如cpp等)以外,把inl文件也当作c++文件处理。
    实际上我用的是:
    ctags -R --kinds-c++=+p --fields=+iaS --extra=+q --langmap=c++:+.inl .
    多余的这些选项是用来生成类成员函数tags,以及用于自动补全的(omnicppcomplete)
    需要提一下的是,虽然ctags 可以通过-f 制定生成tags的位置,但是我觉得在代码当前目录生成tags比较方便,
    至于因此可能要设置多个tags路径,因为tags路径设置可以写在脚本中自动执行,所以也不是很麻烦的事情,这个是后话了。
    
3.2 
 3.对std代码生成tags
    std代码,以我的计算机为例,std代码在/usr/include/c++/4.1.2里面。
    很多文件的namespace是这样定义的 namespace _GLIBCXX_STD
    在VC7下面的好像是 STD_BEGIN吧,但是他们其实都代表 namespace std{ (注意这里的花括号),
因此在生成tags之前,最好把这些文件的宏都替换掉,步骤如下:
    a) 备份文件,cp -R /usr/include/c++/4.1.2 /usr/include/c++/4.1.2.bak


    a) 进到 /usr/include/c++/4.1.2目录 cd /usr/include/c++/4.1.2
    b) 运行vim 
    c) 读取所有文件    
         :args **
       这里** 表示递归读取文件
    d) 然后将namespace _GLIBCXX_STD替换成 namespace std{
         :argdo %s/^namespace _GLIBCXX_STD$/namespace std{/g
       对于VC7而言,可能还要处理STD_END,将它们替换成}
    e) 通过ctags生成tags
         :!ctags -R --kinds-c++=+p --fields=+iaS --extra=+q --language-force=c++ .
       注意这个--languague-force,因为有些文件没有后缀,而且我看std目录里面也挺干净的,就直接当成c++文件都处理了。这里可以




4  taglist  
    1 下载
    2 解压  这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件:
        plugin/taglist.vim – taglist插件
        doc/taglist.txt    - taglist帮助文件
    3  配置
        "taglist
        map :TlistToggle 
        let Tlist_Ctags_Cmd = '~/.vim/local/ctags58/bin/ctags'
        let Tlist_Show_One_File = 1            "不同时显示多个文件的tag,只显示当前文件的
        let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最后一个窗口,则退出vim
        let Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglist窗口
5   NERDTREE
    下载  下载,然后解压,
    将解压得到的plugin和doc文件夹与~/.vim/目录下的同名文件夹合并。然后往.vimrc文件中增加下面配置代码:
    " 设置NerdTree
    map :NERDTreeMirror
    map :NERDTreeToggle
    
    NERDTree提供了丰富的键盘操作方式来浏览和打开文件,我简单介绍一些常用的快捷键:
    和编辑文件一样,通过h j k l移动光标定位
    o 打开关闭文件或者目录,如果是文件的话,光标出现在打开的文件中
    go 效果同上,不过光标保持在文件目录里,类似预览文件内容的功能
    i和s可以水平分割或纵向分割窗口打开文件,前面加g类似go的功能
    t 在标签页中打开
    T 在后台标签页中打开
    p 到上层目录
    P 到根目录
    K 到同目录第一个节点
    J 到同目录最后一个节点
    m 显示文件系统菜单(添加、删除、移动操作)
    ? 帮助
    q 关闭
    
6  snipmate  懒人必备
    %E4%B8%AD%E5%AF%B9snipmate%E7%9A%84%E5%B0%8F%E5%A6%99%E7%94%A8.html
    
7  c.vim c/c++ 必备
   
    解压即可
    介绍说明
    http://blog.csdn.net/guolb57/article/details/7013076
    
8 代码补全插件 YouCompleteMe(安装太复杂了, 撤, 换neocomplcache)
   


配置的githup地址
解压, cp ~/.vim/_vimrc   ~/.vimrc



点击(此处)折叠或打开

  1. if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
  2.    set fileencodings=ucs-bom,utf-8,latin1
  3. endif

  4. set nocompatible    " Use Vim defaults (much better!)
  5. set bs=indent,eol,start        " allow backspacing over everything in insert mode
  6. "set ai            " always set autoindenting on
  7. "set backup        " keep a backup file
  8. set viminfo='20,\"50    " read/write a .viminfo file, don't store more
  9.             " than 50 lines of registers
  10. set history=50        " keep 50 lines of command line history
  11. set ruler        " show the cursor position all the time

  12. " Only do this part when compiled with support for autocommands
  13. if has("autocmd")
  14.   augroup redhat
  15.   
  16.   " In text files, always limit the width of text to 78 characters
  17.   autocmd BufRead *.txt set tw=78
  18.   " When editing a file, always jump to the last cursor position
  19.   autocmd BufReadPost *
  20.   \ if line("'\"") > 0 && line ("'\"") <= line("$") |
  21.   \ exe "normal! g'\"" |
  22.   \ endif
  23.   " don't write swapfile on most commonly used directories for NFS mounts or USB sticks
  24.   autocmd BufNewFile,BufReadPre /media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp
  25.   " start with spec file template
  26.   autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec
  27.   augroup END
  28. endif

  29. if has("cscope") && filereadable("/usr/bin/cscope")
  30.    set csprg=/usr/bin/cscope
  31.    set csto=0
  32.    set cst
  33.    set nocsverb
  34.    " add any database in current directory
  35.    if filereadable("cscope.out")
  36.       cs add cscope.out
  37.    " else add database pointed to by environment
  38.    elseif $CSCOPE_DB != ""
  39.       cs add $CSCOPE_DB
  40.    endif
  41.    set csverb
  42. endif

  43. " Switch syntax highlighting on, when the terminal has colors
  44. " Also switch on highlighting the last used search pattern.
  45. if &t_Co > 2 || has("gui_running")
  46.   syntax on
  47.   set hlsearch
  48. endif

  49. filetype plugin on

  50. if &term=="xterm"
  51.      set t_Co=8
  52.      set t_Sb=[4%dm
  53.      set t_Sf=[3%dm
  54. endif

  55. " Don't wake up system with blinking cursor:
  56. "
  57. let &guicursor = &guicursor . ",a:blinkon0"



  58. """""""""duhui"""""""""""
  59. "语言设置
  60. set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
  61. set termencoding=utf-8
  62. set encoding=utf-8
  63. set fileencodings=ucs-bom,utf-8,cp936
  64. set fileencoding=utf-8


  65. " 空格替代tab
  66. set tabstop=4 " 设置制表符(tab键)的宽度
  67. set softtabstop=4 " 设置软制表符的宽度
  68. set shiftwidth=4 " (自动) 缩进使用的4个空格
  69. set expandtab
  70. set showcmd
  71. set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态

  72. set nocompatible "不需要使用vi 兼容模式
  73. set
  74. set cindent " 使用 C/C++ 语言的自动缩进方式
  75. "
  76. set history=1000
  77. set autoindent " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用
  78. set t_Co=256
  79. "colorscheme murphy " 配色方案
  80. colorscheme monokai " 配色方案

  81. "taglist
  82. map :TlistToggle
  83. let Tlist_Ctags_Cmd = '~/.vim/local/ctags58/bin/ctags'
  84. let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
  85. let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
  86. let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
  87. " 设置NerdTree
  88. map :NERDTreeMirror
  89. map :NERDTreeToggle
  90. let g:neocomplcache_enable_at_startup = 1 "插件自动启动



阅读(1060) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~