1. 安装gvim
下在安装gvim后,默认路径为C:\Program Files\Vim,即$VIM变量保存的值
其中:
vim72为gvim 系统默认目录,
vimfiles 为gvim 用户设定目录
2. 安装插件
下载插件放在C:\ProgramFiles\Vim\vimfiles\plugin目录下
可以下载自己喜欢的vim配色放在C:\Program Files\Vim\vimfiles\colors目录中
然后在自己的vimrc中指定colorscheme 配置名称
3. 安装cscope、ctags及所用到的linux命令,及环境变量设置
因为在我们的vimrc配置中用到一些linux下的命令,如cp,cd ,find 等,还有cscope与 ctags命令,所以要把linux下的一些命令,给”拷贝”(不是直接复制过来哟~)出来。
因为linux这些命令如果要在window运行,需要一些环境库,所以我们直接从cywin把这些命令拷贝出来,而cscope与ctags可以从官方下载,编译成window版。如图:
我们在C:\ProgramFiles\Vim中建个文件夹,命名为VIM_NEED_EXE(你可以随便取名~)
然后把上图中的这些命令拷贝到此文件夹下,因为一会我们要用到的gvim中,要用到这些命令,所以我们好要把这些命令加到windows环境变量中,需要注意的一点是,windows中也有find,sort命令,而二者是有差别的,为了使用我们的find,sort命令能第一个匹配(就是使用linux下这个find命令,而不是windows下的,二者有区别,具体区别去百度查一查),我们有一个技巧:把我们的命令的环境变量放在前面,这样能首次匹配。
如下图,为我的window环境变量设置目录(别告诉我你找不到,自己去百度查去~)
其中PATH为用户(我的是hr)的程序的查找位置。下面还有个“系统变量”,其中有个Path,这是所有用户的默认系统执行路径设置。打个比方:如果你要运行暴风影音程序,那么,先到“系统变量”Path中查找一下又无暴风影音的可执行程序,如果没有,再到用户的PATH中查找。即PATH 〉Path。
所以我们要将C:\ProgramFiles\Vim\VIM_NEED_EXE 加入到系统PATH中,并且要放在最前面,因为如下图,我在cmd中输入path后,先打印出系统PATH,然后才是用户的path
如果我们把C:\ProgramFiles\Vim\VIM_NEED_EXE放在path中或PATH中,会首先匹配windows 的find 或sort命令。
4. _Vimrc及工程vim插件配置
__vimrc文件
我们保持__vimrc文件基本不变,只是在最后一行,加入source$VIM/my_vimrc_win.vim
引入我们自己的vimrc配置文件
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set diffexpr=MyDiff()
function MyDiff()
letopt = '-a --binary '
if&diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if&diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
letarg1 = v:fname_in
ifarg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
letarg2 = v:fname_new
ifarg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
letarg3 = v:fname_out
ifarg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
leteq = ''
if$VIMRUNTIME =~ ' '
if &sh =~ '\ let cmd = '""' . $VIMRUNTIME . '\diff"' let eq = '"' else let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"' endif else let cmd = $VIMRUNTIME . '\diff' endif silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' .arg3 . eq endfunction source $VIM/my_vimrc_win.vim _my_vimrc_win.vim文件 我们自己的vimrc配置文件,关于每句话的含义,我们不一一解释,只把一些关键的解释一下 set nu filetype plugin indent on set autoindent set tabstop=4 set shiftwidth=4 " 缩进宽度 set mouse=a "使用鼠标 set nowrap "不自动换行 set nohls "不高亮显示查找结果 set nobackup " 不生成备份文件 set guioptions-=T " 隐藏工具栏 colorscheme lucius "set encoding=utf-8 "set fileencoding=utf-8 "set fileencodings=utf-8 "set termencoding=utf-8 "Set mapleader let mapleader = "," “前导符号 " 启用代码折叠 autocmd FileType c,cpp setl fdm=indent | setl nofen " 打开taglist map """""""""""""""""""""""""""""" " netrw setting """""""""""""""""""""""""""""" let g:netrw_winsize = 30 nmap """""""""""""""""""""""""""""" " BufExplorer """""""""""""""""""""""""""""" let g:bufExplorerDefaultHelp=0 " Do not show default help. let g:bufExplorerShowRelativePath=1 " Show relative paths. let g:bufExplorerSortBy='mru' " Sort by most recently used. let g:bufExplorerSplitRight=0 " Split left. let g:bufExplorerSplitVertical=1 " Split vertically. let g:bufExplorerSplitVertSize = 30 " Splitwidth let g:bufExplorerUseCurrentWindow=1 " Open in new window. autocmd BufWinEnter \[Buf\ List\] setlnonumber """""""""""""""""""""""""""""" " winManager setting """""""""""""""""""""""""""""" let g:winManagerWindowLayout ="BufExplorer,FileExplorer|TagList" let g:winManagerWidth = 30 let g:defaultExplorer = 0 nmap nmap nmap map """""""""""""""""""""""""""""" " lookupfile setting """""""""""""""""""""""""""""" let g:LookupFile_MinPatLength = 2 "最少输入2个字符才开始查找 "let g:LookupFile_PreserveLastPattern= 0 "0表示不保存上次查找的字符串 let g:LookupFile_PreservePatternHistory =1 "保存查找历史 let g:LookupFile_AlwaysAcceptFirst = 1 "回车打开第一个匹配项目 let g:LookupFile_AllowNewFiles = 0 "不允许创建不存在的文件 iffilereadable("./filenametags") "设置tag文件的名字 letg:LookupFile_TagExpr = '"./filenametags"' endif nmap nmap nmap """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " ctags setting """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " configure tags set tags+=$VIM/tags/gtk " mapping map inoremap "inoremap "inoremap inoremap inoremap inoremap """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " OmniCppComplete setting """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let OmniCpp_NamespaceSearch = 1 let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters let OmniCpp_MayCompleteDot = 1 " autocomplete after . let OmniCpp_MayCompleteArrow = 1 " autocomplete after -> let OmniCpp_MayCompleteScope = 1 " autocomplete after :: let OmniCpp_DefaultNamespaces =["std", "_GLIBCXX_STD"] " automatically open and close thepopup menu / preview window au CursorMovedI,InsertLeave * ifpumvisible() == 0|silent! pclose|endif setcompleteopt=menuone,menu,longest,preview """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " cscope setting """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if has("cscope") set csto=1 set cst endif nmap nmap nmap nmap nmap nmap nmap nmap """""""""""""""""""""""""""""" " mark setting """""""""""""""""""""""""""""" nmap vmap nmap vmap nmap vmap """""""""""""""""""""""""""""" " showmarks setting """""""""""""""""""""""""""""" " Enable ShowMarks let showmarks_enable = 1 " Show which marks let showmarks_include ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" " Ignore help, quickfix, non-modifiablebuffers let showmarks_ignore_type = "hqm" " Hilight lower & upper marks let showmarks_hlline_lower = 1 let showmarks_hlline_upper = 1 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " quickfix setting """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" autocmd FileType c,cpp map nmap nmap nmap nmap nmap """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " preview-window setting """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" nmap function! InitProject() iffilereadable(g:project_vim) execute"source " . g:project_vim “加载我们的工程project.vim endif execute"set path+=" . g:project_dir . "**" execute"set tags+=" . g:project_dir . "tags" “加入工程目录的tags文件 setnocsverb iffilereadable(g:project_dir . "cscope.out") execute"cs add " . g:project_dir . "cscope.out" “加入工程目录的cscope.out文件 elseif$CSCOPE_DB != "" csadd $CSCOPE_DB endif setcsverb execute"cd " . g:work_dir endfunction function! UpdateTagsCscope() “重要的函数,建议看看,在初始化时调用 wall " Write allchanged buffers. execute"cd " . g:project_dir “切换到我们的工程目录,这个变量是我们自定义的。在project.vim中定义的let g:project_dir ="E:\GVIM_PROJECT\" !ctags-R --c++-kinds=+p --fields=+iaS --extra=+q . “生成ctags setnocsverb cskill -1 setcsverb execute"cd " . g:work_dir !find. -type f | grep -E "(\.h|\.c|\.hpp|\.cpp|\.js)$" > cscope.files “查找指定文件类型,生成列表,也可以不find,用cscope –R生成,但是不能指定类型 !cscope–bq “生成cscope.out文件和cscope.po.out文件(加b参数的话,查找时候能快速一些) execute"!move cscope.* " . g:project_dir callInitProject() endfunction let g:project_dir = "./" let g:work_dir = "./" let g:project_vim = $VIM.\\project.vim “在初始化InitProject()函数中,会加载我们的工程project.vim " execute project relatedconfiguration call InitProject() "----copy from easwy---- " Platform function! MySys() ifhas("win32") return "windows" else return "linux" endif endfunction function! SwitchToBuf(filename) "let fullfn = substitute(a:filename, "^\\~/", $HOME ."/", "") " find in current tab let bufwinnr = bufwinnr(a:filename) if bufwinnr != -1 exec bufwinnr . "wincmd w" return else " find in each tab tabfirst let tab = 1 while tab <= tabpagenr("$") let bufwinnr = bufwinnr(a:filename) if bufwinnr != -1 exec "normal " . tab. "gt" exec bufwinnr ."wincmd w" return endif tabnext let tab = tab + 1 endwhile " not exist, new tab exec "tabnew " . a:filename endif endfunction "Fast edit vimrc if MySys() == 'linux' "Fast reloading of the .vimrc map "Fast editing of .vimrc map "When .vimrc is edited, reload it autocmd! bufwritepost .vimrc source ~/.vimrc elseif MySys() == 'windows' " Set helplang set helplang=cn "Fast reloading of the _vimrc map "Fast editing of _vimrc map "When _vimrc is edited, reload it autocmd! bufwritepost _vimrc source $VIM/_vimrc endif " For windows version if MySys() == 'windows' source $VIMRUNTIME/mswin.vim behave mswin endif project.vim文件 工程路径的配置文件 " 设置工程路径和工作路径。工程路径需使用绝对路径,并且不能使用~符号 letg:project_dir = "E:\\GVIM_PROJECT\\" “工程目录,用于生成cscope与tags nmap cdopl :cd E:\GVIM_PROJECT\PROJECT_1\src “normal模式直接按下cdopl,切换到工程指定目录 5. 享受vim 插入模式Ctrl_I 查找函数匹配,ctrl_n ctrl_p上下浏览 目录文件查找 ,(前导)+lw