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
-
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
-
set fileencodings=ucs-bom,utf-8,latin1
-
endif
-
-
set nocompatible " Use Vim defaults (much better!)
-
set bs=indent,eol,start " allow backspacing over everything in insert mode
-
"set ai " always set autoindenting on
-
"set backup " keep a backup file
-
set viminfo='20,\"50 " read/write a .viminfo file, don't store more
-
" than 50 lines of registers
-
set history=50 " keep 50 lines of command line history
-
set ruler " show the cursor position all the time
-
-
" Only do this part when compiled with support for autocommands
-
if has("autocmd")
-
augroup redhat
-
-
" In text files, always limit the width of text to 78 characters
-
autocmd BufRead *.txt set tw=78
-
" When editing a file, always jump to the last cursor position
-
autocmd BufReadPost *
-
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
-
\ exe "normal! g'\"" |
-
\ endif
-
" don't write swapfile on most commonly used directories for NFS mounts or USB sticks
-
autocmd BufNewFile,BufReadPre /media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp
-
" start with spec file template
-
autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec
-
augroup END
-
endif
-
-
if has("cscope") && filereadable("/usr/bin/cscope")
-
set csprg=/usr/bin/cscope
-
set csto=0
-
set cst
-
set nocsverb
-
" add any database in current directory
-
if filereadable("cscope.out")
-
cs add cscope.out
-
" else add database pointed to by environment
-
elseif $CSCOPE_DB != ""
-
cs add $CSCOPE_DB
-
endif
-
set csverb
-
endif
-
-
" Switch syntax highlighting on, when the terminal has colors
-
" Also switch on highlighting the last used search pattern.
-
if &t_Co > 2 || has("gui_running")
-
syntax on
-
set hlsearch
-
endif
-
-
filetype plugin on
-
-
if &term=="xterm"
-
set t_Co=8
-
set t_Sb=[4%dm
-
set t_Sf=[3%dm
-
endif
-
-
" Don't wake up system with blinking cursor:
-
"
-
let &guicursor = &guicursor . ",a:blinkon0"
-
-
-
-
"""""""""duhui"""""""""""
-
"语言设置
-
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
-
-
-
" 空格替代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
-
set cindent " 使用 C/C++ 语言的自动缩进方式
-
"
-
set history=1000
-
set autoindent " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用
-
set t_Co=256
-
"colorscheme murphy " 配色方案
-
colorscheme monokai " 配色方案
-
-
"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窗口
-
" 设置NerdTree
-
map :NERDTreeMirror
-
map :NERDTreeToggle
-
let g:neocomplcache_enable_at_startup = 1 "插件自动启动
阅读(1090) | 评论(0) | 转发(0) |