gvim配置

vimrc中默认的配置,以下基本是vimrc中的默认配置和解释
set nu											"显示行号
colorscheme koehler								"配置配色方案
syntax enable									"语法高亮
syntax on										"语法高亮打开
set tabstop=4									"设置tab的缩进为4个空格
set softtabstop=4								"设置tab的缩进为4个空格
set shiftwidth=4								"指定下一行首行缩进
set expandtab									"不要在文件中出现制表符

set showcmd         							"输入的命令显示出来,看的清楚些
set showmode         							"命令行显示vim当前模式
set si											"智能缩进
set history=400									"保存400条历史
set nobackup 									"vim一般不会产生备份文件。不需要就如下写。
filetype plugin indent on						"使用缩进文件,vim根据不同的策略处理不同的文件类型
set backspace=indent,eol,start					"指明在插入模式下载哪里允许删除光标前的字符。三个分别表示行首的空白字符,换行符和插入模式开始处
set autoindent									"启动一个新行的时候使用与之前一致的缩进,,换行或者o,也可以用set ai
set mouse=a 									"允许鼠标,在所有模式 或者用a	
highlight Comment ctermfg=6						"设置注释的颜色用1-7代表预定义的7种颜色,如果文字被加上了bold属性,以高亮颜色显示

set nocompatible								" 关闭兼容模式
set wildmenu									" vim 自身命令行模式智能补全

autocmd BufWritePost $MYVIMRC source $MYVIMRC   " 让配置变更立即生效

set tags=tags									"如果有tags的话使用当前目录下的tags

set cursorline   								"整行高亮
set cursorcolumn  								"整列高亮
set hlsearch									"高亮显示搜索结果	
set incsearch									"开启实时搜索功能
set ignorecase									"搜索时大小写不敏感
set laststatus=2								"总是显示状态栏
set ruler										"显示光标当前位置标尺

"set foldmethod=indent
set foldmethod=syntax                   		" 基于缩进或语法进行代码折叠
set nofoldenable								" 启动 vim 时关闭折叠代码
"操作za,打开或关闭当前折叠;zM,关闭所有   折叠;zR,打开所有折叠
set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1   "解决中文乱码的问题


插件

插件1类: windows插件:

1)ctags

这个是生成tags文件的命令

通常的用法是ctags -R *就可以在当前目录生成tags文件

ctags57.zip

解压到

ctags.exe 拷贝到$VIM\vim72\目录下,编辑_vimrc,添加 set tags=tags;

打开 cmd,切换到源代码根目录处,运行 ctags -R

vimrc中可以修改如下配置:

nnoremap   :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .   
let Tlist_Ctags_Cmd = 'ctags.exe'

按F9就可以生成tags(这个tags可以在后面的omnicppcomplete自动补全中会涉及使用到)

2)cscope  

cscope-15.7a-win32rev18-static.zip

cscope主要是需要查找某个函数的调用情况:

解压 cscope-16.0a-win32.7static.zip,把 cscope.exe 拷贝到$VIM\vim72\
添加$VIM\vim72 到系统环境变量:我的电脑属性高级环境变量系统变量
然后运行
cmd,输入 cscope -V 测试看是否安装成功。

建立符号的命令:

dir /s /b *.c *.h *.cpp *.hpp > cscope.files

cscope -b

或者用

cscope -Rbq

vimrc中的配置

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set csprg=cscope
if has("cscope")
  set csprg=cscope
  set csto=1
  set cst
  set nocsverb
  " add any database in current directory
  if filereadable("cscope.out")
      cs add cscope.out
  endif
  set csverb
endif


nmap a :cs add cscope.out ./    let loaded_nerd_tree=1
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("")
nmap s :scs find s =expand("")
nmap g :scs find g =expand("")
nmap c :scs find c =expand("")
nmap t :scs find t =expand("")
nmap e :scs find e =expand("")
nmap f :scs find f =expand("")
nmap i :scs find i =expand("")
nmap d :scs find d =expand("")
set cscopequickfix=s-,c-,d-,i-,t-,e-
nnoremap   :!dir /s /b *.c *.h *.cpp *.hpp > cscope.files  
nnoremap   :!cscope -Rbq  
主要是快捷键的使用:

ctrl+shift+- 再按g跟ctrl+]差不多

ctrl+shift+- 再按c就是查看该函数的调用情况。

插件2类:vim插件

1). taglist.vim   

按F2显示函数名称和变量名

文件安装路径:

\vimxx\plugin\

vimrc

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" taglist setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let Tlist_Show_One_File=1						"如果你不想同时显示多个文件中的tag,设置Tlist_Show_One_File为1。缺省为显示多个文件中的tag;
let Tlist_Exit_OnlyWindow=1						"- 如果你在想taglist窗口是最后一个窗口时退出VIM,设置Tlist_Exit_OnlyWindow为1;
let Tlist_show_Menu=1							"- 在gvim中,如果你想显示taglist菜单,设置Tlist_Show_Menu为1。
let TlistUpdate=1								"Tlist update
let Tlist_Use_Right_Window=0					"- 如果你想taglist窗口出现在右侧,设置Tlist_Use_Right_Window为1。缺省显示在左侧。
let Tlist_WinWidth=40							"Tlist_WinHeight和Tlist_WinWidth可以设置taglist窗口的高度和宽度
let Tlist_Ctags_Cmd = 'ctags.exe'
let Tlist_Auto_Open = 0     					"设置tlist默认关闭"
let Tlist_File_Fold_Auto_Close=1 
map  :TlistToggle
imap  :TlistToggle

2) pathogen.vim

这个 plugin 非常棒,有了它你不在需要把 plugin 的一些配置文件
分散的放到
.vim/下的各个目录中。而是直接把整个目录拷贝

.vim/bundle/下即可

Put pathogen.vim to $HOME/.vim/autoload/pathogen.vim

如果是 Windows,把 pathogen.vim 放到 $VIM\vim74\autoload\,其他 plugins 放到
$VIM\vimfiles\bundle\

vimrc中需要配置如下:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"pathogen
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
execute pathogen#infect() 

3)安装了ctrlp.vim

这个插件可以像sourceInsight的project view 一样,输入文件名就可以打开文件

如果安装了上面的pathogen.vim并且在vimrc中加载了execute

就可以直接把ctrlp.zip中的文件全部拷贝到vimfiles/bundle/下面

这个功能比较强大最主要的功能ctrl+p然后输入文件名可以打开当前目录下的文件

如果想要过滤更多的文件,比如*.o *.out文件都出现的太多,可以修改ctrlp.vim中的

igfiles和igdirs 变量igfiles是文件,igdirs 是目录,可以学者其他的添加对应的文件。

4) nerdtree and vim-nerdtree-tabs

nerdtree主要类似于taglist可以查看文件的目录结构,一般用的比较少,只是可能在开始工作的时候查看文档结构的时候可以查看。

nerdtree-master.zip和vim-nerdtree-tabs-master.zip

解压之后分别放在vimfiles\bundle(前提是装了pathogen.vim)

先安装 pathogen.vim,拷贝文件到~/.vim/autoload/
然后安装 nerdtree, 拷贝目录到$VIM\vimfiles\bundle\
最后安装 vim-nerdtree-tabs, 拷贝目录到$VIM\vimfiles\bundle\

vimrc配置:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" nerdtree setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"nerdtree setting
"nerdtree and vim-nerdtree-tabs
let g:nerdtree_tabs_open_on_console_startup=1
let g:nerdtree_tabs_open_on_new_tab=1
autocmd vimenter * NERDTree
autocmd VimEnter * wincmd p
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
map  :NERDTreeToggle
imap  :NERDTreeToggle

5)winManager.vim

这个是使用默认的窗口配置,正常不需要,默认可以不装,如果对界面布局有特殊要求的可以装:

vimrc配置

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" winmanager配置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"let g:NERDTree_title='NERD Tree'
"let g:winManagerWindowLayout='NERDTree|TagList'

" 绑定F2到winmanager
nmap   :WMToggle
nmap   :if IsWinManagerVisible()  WMToggle  else  WMToggle:q endif 
function! ToggleWindowsManager()
    if IsWinManagerVisible()
        call s:CloseWindowsManager()
    else
        call s:StartWindowsManager()
        " 增加启动时候关闭空buff代码
        exe 'q'
    end
endfunction

6) omnicppcomplete

自动补全:

这个比较好用

omnicppcomplete-0.41.zip

    after\ftplugin\cpp.vim
    after\ftplugin\c.vim


    autoload\omni\common\debug.vim
                        \utils.vim


    autoload\omni\cpp\complete.vim
                     \includes.vim
                     \items.vim
                     \maycomplete.vim
                     \namespaces.vim
                     \settings.vim
                     \tokenizer.vim
                     \utils.vim


    doc\omnicppcomplete.txt

文件路径:

vimrc:

"============omnicppcomplete---------------

set completeopt=menu,menuone    "关掉智能补全时的预览窗口
let OmniCpp_MayCompleteDot=1
let OmniCpp_MayCompleteArrow=1
let OmniCpp_MayCompleteScope=1
let OmniCpp_SelectFirstItem=2
let OmniCpp_NamespaceSearch=2
let OmniCpp_ShowPrototypeInAbbr=1
let OmniCpp_GlobalScopeSearch=1
let OmniCpp_DisplayMode=1
let OmniCpp_DefaultNamespaces=["std"]
set nocp
imap  
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif 
set completeopt=menuone,menu,longest
"ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .          "用于生成omni匹配的tags
两个快捷键TAB键和F9键。
imap  
nnoremap   :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .   

还有个gvim下全屏的工具,发现不是很好用,就不推荐了:

gvimfullscreen_win32.zip

============================

粘贴下所有的vimrc文件

set nu											"显示行号
colorscheme koehler								"配置配色方案
syntax enable									"语法高亮
syntax on										"语法高亮打开
set tabstop=4									"设置tab的缩进为4个空格
set softtabstop=4								"设置tab的缩进为4个空格
set shiftwidth=4								"指定下一行首行缩进
set expandtab									"不要在文件中出现制表符

set showcmd         							"输入的命令显示出来,看的清楚些
set showmode         							"命令行显示vim当前模式
set si											"智能缩进
set history=400									"保存400条历史
set nobackup 									"vim一般不会产生备份文件。不需要就如下写。
filetype plugin indent on						"使用缩进文件,vim根据不同的策略处理不同的文件类型
set backspace=indent,eol,start					"指明在插入模式下载哪里允许删除光标前的字符。三个分别表示行首的空白字符,换行符和插入模式开始处
set autoindent									"启动一个新行的时候使用与之前一致的缩进,,换行或者o,也可以用set ai
set mouse=a 									"允许鼠标,在所有模式 或者用a	
highlight Comment ctermfg=6						"设置注释的颜色用1-7代表预定义的7种颜色,如果文字被加上了bold属性,以高亮颜色显示

set nocompatible								" 关闭兼容模式
set wildmenu									" vim 自身命令行模式智能补全

autocmd BufWritePost $MYVIMRC source $MYVIMRC   " 让配置变更立即生效

set tags=tags									"如果有tags的话使用当前目录下的tags

set cursorline   								"整行高亮
set cursorcolumn  								"整列高亮
set hlsearch									"高亮显示搜索结果	
set incsearch									"开启实时搜索功能
set ignorecase									"搜索时大小写不敏感
set laststatus=2								"总是显示状态栏
set ruler										"显示光标当前位置标尺

"set foldmethod=indent
set foldmethod=syntax                   		" 基于缩进或语法进行代码折叠
set nofoldenable								" 启动 vim 时关闭折叠代码
"操作za,打开或关闭当前折叠;zM,关闭所有   折叠;zR,打开所有折叠
set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1   "解决中文乱码的问题
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"pathogen
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
execute pathogen#infect() 


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" taglist setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let Tlist_Show_One_File=1						"如果你不想同时显示多个文件中的tag,设置Tlist_Show_One_File为1。缺省为显示多个文件中的tag;
let Tlist_Exit_OnlyWindow=1						"- 如果你在想taglist窗口是最后一个窗口时退出VIM,设置Tlist_Exit_OnlyWindow为1;
let Tlist_show_Menu=1							"- 在gvim中,如果你想显示taglist菜单,设置Tlist_Show_Menu为1。
let TlistUpdate=1								"Tlist update
let Tlist_Use_Right_Window=0					"- 如果你想taglist窗口出现在右侧,设置Tlist_Use_Right_Window为1。缺省显示在左侧。
let Tlist_WinWidth=40							"Tlist_WinHeight和Tlist_WinWidth可以设置taglist窗口的高度和宽度
let Tlist_Ctags_Cmd = 'ctags.exe'
let Tlist_Auto_Open = 0     					"设置tlist默认关闭"
let Tlist_File_Fold_Auto_Close=1 
map  :TlistToggle
imap  :TlistToggle

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
set csprg=cscope
if has("cscope")
  set csprg=cscope
  set csto=1
  set cst
  set nocsverb
  " add any database in current directory
  if filereadable("cscope.out")
      cs add cscope.out
  endif
  set csverb
endif

nmap a :cs add cscope.out ./    let loaded_nerd_tree=1
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("")
nmap s :scs find s =expand("")
nmap g :scs find g =expand("")
nmap c :scs find c =expand("")
nmap t :scs find t =expand("")
nmap e :scs find e =expand("")
nmap f :scs find f =expand("")
nmap i :scs find i =expand("")
nmap d :scs find d =expand("")
set cscopequickfix=s-,c-,d-,i-,t-,e-




"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" winmanager配置
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"let g:NERDTree_title='NERD Tree'
"let g:winManagerWindowLayout='NERDTree|TagList'

" 绑定F2到winmanager
nmap   :WMToggle
nmap   :if IsWinManagerVisible()  WMToggle  else  WMToggle:q endif 
function! ToggleWindowsManager()
    if IsWinManagerVisible()
        call s:CloseWindowsManager()
    else
        call s:StartWindowsManager()
        " 增加启动时候关闭空buff代码
        exe 'q'
    end
endfunction





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" nerdtree setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"nerdtree setting
"nerdtree and vim-nerdtree-tabs
let g:nerdtree_tabs_open_on_console_startup=1
let g:nerdtree_tabs_open_on_new_tab=1
autocmd vimenter * NERDTree
autocmd VimEnter * wincmd p
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
map  :NERDTreeToggle
imap  :NERDTreeToggle

"============omnicppcomplete---------------

set completeopt=menu,menuone    "关掉智能补全时的预览窗口
let OmniCpp_MayCompleteDot=1
let OmniCpp_MayCompleteArrow=1
let OmniCpp_MayCompleteScope=1
let OmniCpp_SelectFirstItem=2
let OmniCpp_NamespaceSearch=2
let OmniCpp_ShowPrototypeInAbbr=1
let OmniCpp_GlobalScopeSearch=1
let OmniCpp_DisplayMode=1
let OmniCpp_DefaultNamespaces=["std"]
set nocp
imap  
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif 
set completeopt=menuone,menu,longest
"ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .          "用于生成omni匹配的tags
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"full screen
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map  :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0) 
autocmd GUIEnter * simalt ~x

if has('gui_running') && has("win32")
    au GUIEnter * simalt ~x
endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"key map
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
map  :TlistToggle
imap  :TlistToggle

nmap   :WMToggle
nmap   :if IsWinManagerVisible()  WMToggle  else  WMToggle:q endif 

nnoremap   :VimFindstr
map  :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0) 

map  :NERDTreeToggle
imap  :NERDTreeToggle
"omnicppcomplete
imap  
nnoremap   :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .   
nnoremap   :!dir /s /b *.c *.h *.cpp *.hpp > cscope.files  
nnoremap   :!cscope -Rbq   
 


你可能感兴趣的:(嵌入式技术,c语言代码)