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 "解决中文乱码的问题
这个是生成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自动补全中会涉及使用到)
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就是查看该函数的调用情况。
按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
这个 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 是目录,可以学者其他的添加对应的文件。
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
这个是使用默认的窗口配置,正常不需要,默认可以不装,如果对界面布局有特殊要求的可以装:
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