我的vim插件(c/c++ IDE)

"let g:clang_complete_copen=1
"let g:clang_use_library =1
"let g:clang_complete_copen=1  
"let g:clang_periodic_quickfix=1  
"let g:clang_snippets=1  
"let g:clang_close_preview=1  
"let g:clang_use_library=1  						      
"let g:neocomplcache_enable_at_startup = 1  
"let g:clang_user_options='-stdlib=libc++ -std=c++11 -IIncludePath'
"clang_complete setting
"let g:clang_conceal_snippets=1
"let g:clang_complete_copen=1  
"let g:clang_periodic_quickfix=1  
"let g:clang_snippets=1  
"let g:clang_complete_macros = 1
"let g:clang_close_preview=1  
"let g:clang_use_library=1  
"let g:clang_user_options='-stdlib=libc++ -std=c++11 ' 
"-I/usr/include/ 

"let g:neocomplcache_enable_at_startup = 1  
"set completeopt=menu,longest
"vim配置
"super tab setting
let g:clang_complete_auto=1
"-- omnicppcomplete setting --
"" 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
imap <F3> <C-X><C-O>
" 按下F2根据头文件内关键字补全
 imap <F2> <C-X><C-I>
 set completeopt=menu,menuone " 关掉智能补全时的预览窗口
 let OmniCpp_MayCompleteDot = 1 " autocomplete with .
 let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
 let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
 let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
 let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included
" files
 let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup
" window
 let OmniCpp_GlobalScopeSearch=1 " enable the global scope search
 let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all
" members
" "let OmniCpp_DefaultNamespaces=["std"]
 let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the
" last column
 let OmniCpp_ShowAccess=1
set number
set backspace=2
"缩进
set autoindent
set cindent
set smartindent
set fdm=indent 
filetype plugin indent on
set ruler 
set hlsearch
set tabstop=4
set nobackup
set clipboard+=unnamed
set mouse=a
set undolevels=5000
syntax enable
syntax on
"tags 配置
set tags+=/home/jackstehpie/code/tags/tags
set tags+=/usr/include/tags
set tags+=/usr/include/c++/tags 
"tags setting 
"--ctags setting--
" 按下F5重新生成tag文件,并更新taglist
map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>

set tags=tags
set tags+=./tags "add current directory's generated tags file
set tags+=/usr/src/linux-headers-3.2.0-30/ "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)\

"-- Taglist setting --
let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行
let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边
let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表
let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vim
"是否一直处理tags.1:处理;0:不处理
let Tlist_Process_File_Always=1 "实时更新tags
let Tlist_Inc_Winwidth=0
let Tlist_Show_One_File=1    "只显示当前文件的tags
let Tlist_WinWidth=20        "设置taglist宽度

"-- Cscope setting --
if has("cscope")
	set csprg=/usr/bin/cscope        " 指定用来执行cscope的命令
	set csto=0                        " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库
	set cst                            " 同时搜索cscope数据库和标签文件
	set cscopequickfix=s-,c-,d-,i-,t-,e-    " 使用QuickFix窗口来显示cscope查找结果
	set nocsverb
	if filereadable("cscope.out")    " 若当前目录下存在cscope数据库,添加该数据库到vim
		cs add cscope.out
	elseif $CSCOPE_DB != ""            " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
		cs add $CSCOPE_DB
	endif
	set csverb
endif
map <F4> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
imap <F4> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
" 将:cs find c等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快再按下c)
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
"
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR> :copen<CR><CR>
"-- WinManager setting --
"let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件
let g:winManagerWindowLayout='FileExplorer' " 设置我们要管理的插件
let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim
nmap wm :WMToggle<cr> 
nmap tl :Tlist<cr>

"minbufexpl.vim setting
let g:miniBufExplMapWindowNavVim = 1 "按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapWindowNavArrows = 1 "按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapCTabSwitchBufs = 1 "启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
let g:miniBufExplModSelTarget = 1 " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer

"--fold setting--
set foldmethod=syntax " 用语法高亮来定义折叠
set foldlevel=10 " 启动vim时不要自动折叠代码
set foldcolumn=5 " 设置折叠栏宽度

"-- QuickFix setting --
" 按下F6,执行make clean
map <F7> :make clean<CR><CR><CR>
" 按下F7,执行make编译程序,并打开quickfix窗口,显示编译信息
map <F6> :make<CR><CR><CR> :copen<CR><CR>
" 按下F8,光标移到上一个错误所在的行
map <F9> :cp<CR>
" 按下F9,光标移到下一个错误所在的行
map <F8> :cn<CR>
" 以上的映射是使上面的快捷键在插入模式下也能用
imap <F6> <ESC>:make<CR><CR><CR>
imap <F7> <ESC>:make clean<CR><CR><CR> :copen<CR><CR>
imap <F8> <ESC>:cn<CR>
imap <F9> <ESC>:cp<CR>
"cvim setting
let  g:C_UseTool_cmake   = 'yes'
let  g:C_UseTool_doxygen = 'yes' 
"为了minuBuf的<C-R><C+S+R>快捷键不能在unbunt下用
"这样改成<,+n><,+N>后移
let mapleader = ","
"Calendar setting
nmap ca :Calendar<CR>
nmap cah :CalendarH<CR>
"vimtips setting
nmap tp :Tip<CR>

let g:DoxygenToolkit_briefTag_pre="@Synopsis  "
let g:DoxygenToolkit_paramTag_pre="@Param "
let g:DoxygenToolkit_returnTag="@Returns   "
let g:DoxygenToolkit_blockHeader="--------------------------------------------------------------------------"
let g:DoxygenToolkit_blockFooter="----------------------------------------------------------------------------"
let g:DoxygenToolkit_authorName="Mathias Lorente"
let g:DoxygenToolkit_licenseTag="My own license" 
let g:DoxygenToolkit_briefTag_pre = "@brief "
let g:DoxygenToolkit_briefTag_post = "<++>"
let g:DoxygenToolkit_briefTag_funcName = "yes"
"自动识别utf8,gbk
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936  
"lookupfile setting
"检测当前目录中时候有filenametags文件,如果有就自动设为lookupfile使用的tag.
if filereadable("./filenametags")
    let g:LookupFile_TagExpr = '"./filenametags"'
endif
":let g:LookupFile_TagExpr = '"./filenametags"'
nmap lf :LookupFile<cr> 


先贴下.vimrc的内容,然后安装下列插件即可(昨天折腾clang_complete,把所有的vim插件不小心rm掉了,今天全部重新安装了下,结果安装omincomplete还是不行。。。不过找到个autocomplpop.vim可以自动提示,凑合用吧先。有遇到这种情况的还请回复帮助下,clang_complete一直提示找不到模式)


1,ctags

2.omnicomplete

3.autocomplpop.vim

http://www.vim.org/scripts/script.php?script_id=1879
把omnicomplete 装上,再装上这个,加上两个不去分大小写的选项
let g:AutoComplPop_IgnoreCaseOption=1
set ignorecase
4.管理vim插件——vim-addons

5,cvim
此插件注释还是很方便的,能节省不少时间。

6,echofunc

7,tagList

8,WinManager

9.MiniBufferExplorer

wm开启关闭
----------------------------------------------------------------------------------------------------
unbuntu安装的改动:
<C-Tab> 向前循环切换到每个buffer上,并在但前窗口打开

<C-S-Tab> 向后循环切换到每个buffer上,并在但前窗口打开&nbsp;  注:MiniBufExplore默认是这两个快捷键,可是在ubuntu中不能使用,原因可能是bash中已经定义了ctrl+tab快捷键所以我们可以更换此快捷键

在vi ~/.vim/plugin/minibufexpl.vim中修改如下:

if g:miniBufExplMapCTabSwitchBufs
  "noremap <C-TAB>   :call <SID>CycleBuffer(1)<CR>:<BS>
  "noremap <C-S-TAB> :call <SID>CycleBuffer(0)<CR>:<BS>
 
  noremap <silent> <leader>n :call <SID>CycleBuffer(1)<CR>:<BS>
  noremap <silent> <leader>N :call <SID>CycleBuffer(0)<CR>:<BS>
endif

这样就可以用,n&nbsp; ,N 进行buffer切换(let mapleader = "," 我已在~/.vimrc中定义leader)


如果在~/.vimrc中设置了下面这句:

let g:miniBufExplMapWindowNavVim = 1

则可以用<C-h,j,k,l>切换到上下左右的窗口中去,就像:

C-w,h j k l    向"左,下,上,右"切换窗口.

在~/.vimrc中设置:

let g:miniBufExplMapWindowNavArrows = 1

是用<C-箭头键>切换到上下左右窗口中去
-------------------------------------------------------------------------------------------------

10.Project

11.quickfix命令集

---------------------------
F5:make
F6:make clean
F8:向下切换错误
F9:向上切换错误
见.vimrc配置
---------------------------

12,Cscope

13,supertab

14,gdbvim

------------------------------------------------------------------------------------------------------

vim --version 查看是否支持clientserver和signs,前面有+号表示支持,-号表示不支持。

--------------------------------------------------------------------------------------------------------
 
15,Calendar Vim 的一个日历插件,它可以提供类似日记的功能,ca/cah启动
http://www.gracecode.com/posts/674.html

16,vimtips
--------------------------------------------------

http://www.vim.org/scripts/script.php?script_id=88

 If you want to finish the installation right now, without restarting vim, simply source the totd.vim file and get a tip: :source path/to/totd.vim :TipOfTheDay(:Tip即可我上面定义成tp) The totd.vim plugin will open the skeleton vimtips file in a help window. As with any plugin that comes with documentation, you should run :helptags path/to/doc so that you can read the documentation with :help totd :help Tip

--------------------------------------------------

17,A.vim
-----------------------------------------------------------------------------
    头/源文件切换命令
        :A 头文件/源文件切换
        :AS 分割窗后并切换头/源文件(切割为上下两个窗口)
        :AV 垂直切割窗口后切换头/源文件(切割为左右两个窗口)
        :AT 新建Vim标签式窗口后切换
        :AN 在多个匹配文件间循环切换
    将光标所在处单词作为文件名打开
        :IH 切换至光标所在文件
        :IHS 分割窗口后切换至光标所在文件(指将光标所在处单词作为文件名打开)
        :IHV 垂直分割窗口后切换
        :IHT 新建标签式窗口后切换
        :IHN 在多个匹配文件间循环切换
    快捷键操作
        <Leader>ih 切换至光标所在文件*
        <Leader>is 切换至光标所在处(单词所指)文件的配对文件(如光标所在处为foo.h,则切换至foo.c/foo.cpp...)
        <Leader>ihn 在多个匹配文件间循环切换

----------------------------------------------------------------------------------


18 DoxygenToolkit.vim 可配合c.vim提供注释,这个有参数注释
--------------------------------------------------------------------------------
http://www.vim.org/scripts/script.php?script_id=987
Issuing the :Dox command with the cursor on the function declaration would
generate
Example:
Given:
int
  foo(char mychar,
      int myint,
      double* myarray,
      int mask = DEFAULT)
{ //...
}

/**
* @brief
*
* @param mychar
* @param myint
* @param myarray
* @param mask
*
* @return
*/

19 lookupfile.vim

下面是lookupfile和所需genutils下载路径
1.)http://www.vim.org/scripts/script.php?script_id=1581
2)http://www.vim.org/scripts/script.php?script_id=197

下载后放到.vim文件夹,解压即可完成安装

编写下面的shell脚本,为vim的源代码,生成一个文件名tag文件。

#!/bin/sh

# generate tag file for lookupfile plugin
echo -e "!_TAG_FILE_SORTED 2 /2=foldcase/" > filenametags
find . -not -regex "*.(png|gif)" -type f -printf "%f %p 1 " |
sort -f >> filenametags

sh lookupfile.sh
mv lookupfile.sh lookupfile
放到环境变量路径/usr/bin
以后可以直接运行looupfile 命令 即可在当前工作目录生成filenametags

以上准备工作完成.

vim打开文件提示:
处理 ~/.vim/plugin/lookupfile.vim 时发生错误:
第 143 行:
E227: 映射 <80>k5 已存在
请按 ENTER 或其它命令继续

解决:
F5/LookupFile为查找文件快捷键,在.vimrc里我设置成了生成tags快捷键,vi lookupfile.vim 143行修改快捷键为“-”
vimrc中修改:LookupFile为lf打开插件

首先敲入命令运行lookupfile在当前目录下生成filenametags
vim 文件
输入lf 在当前窗口上方打开一个lookupfile小窗口,开始输入文件名(至少4个字符),随着你的输入,符合条件的文件就列在下拉列表中了。文件名可以使用VIM的正则表达式,这大大方便了文件的查找。你可以用“CTRL-N”和“CTRL-P”(或者用上、下光标键)来在下拉列表中选择你所需的文件。选中文件后,按回车,就可以前一个窗口中打开此文件。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值