windows配置gvim高效率编程(c&c++)带自动补全代码
2017-03-15 19:56
603 查看
对vim的配置足以处理一般的比赛获其他编程项目要求,如自动缩进,自动补全等等。先上几张截图,看看效果:
可以看见vim简洁高效的界面和不错的缩进功能。
debug功能
一、安装gvim
下载资源并安装
百度云下载网址http://pan.baidu.com/share/link?shareid=365469&uk=2970460274
二、配置c++环境
1,首先下载安装MinGW,下载地址在http://sourceforge.net/projects/mingw/。这个是边下载边安装的,下载完成即安装完成。我的安装目录是F:\MinGW。
2,设置环境变量。右击我的电脑,点属性->高级->环境变量。然后:
1、在PATH里加入F:\MinGW\bin,记得,如果里面还有其他的变量,记得要加个分号啊,分号得在英文输入模式下输入的。
2、新建LIBRARY_PATH变量,如果有的话,在值中加入F:\MinGW\lib,这是标准库的位置。
3、新建C_INCLUDEDE_PATH变量,值设为F:\MinGW\include。
4、新建CPLUS_INCLUDE_PATH变量,值为F:\MinGW\include;F:\MinGW\include\c++\4.5.0;F:\MinGW\include\c++\4.5.0\backward;F:\MinGW\include\c++\4.5.0\mingw32
具体路径请根据你的MinGW选择。
3、在你的_vimrc文件中配置编译调试选项。
“定义CompileRun函数,用来调用进行编译和运行
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
可能遇到的问题:
编译的时候可能会出现:
Info: resolving std::cout by linking to __imp___ZSt4cout (auto-import)
c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: warning: a
uto-importing has been activated without –enable-auto-import specified on the c
ommand line.
This should work unless it involves constant data structures referencing symbols
from auto-imported DLLs.)
在编译命令中加入 -enable-auto-import
三、自动补全
一些代码缩进和其他例如括号自动补全等只需在vimrc配置文件加上相应配置代码即可,最后博主会上传博主自己的vimrc配置代码(较适合于比赛)。接下来是代码自动补全插件的安装:
参考自:http://timothyqiu.com/archives/using-omnicomplete-for-c-cplusplus-in-vim/
OmniComplete 并不是插件的名字,而是 Vim 众多补全方式中的一种(全能补全)。说白了 OmniComplete 其实就是根据光标前的内容猜测光标后的内容,具体怎么猜取决于所采用的脚本。
而 OmniCppComplete 就是专为 C/C++ 编写的 OmniComplete 一个补全脚本。
那么经常和 OmniCppComplete 一起出没的 Ctags 又是什么呢?Ctags 全名 Exuberant Ctags,是一个独立的程序(也就是说,其实和 Vim 一点关系都没有)。它可以为各种语言的源代码生成语言元素(language object)索引文件。对于 C/C++ 来说,就是把源代码中的各种宏、函数、类、类成员等等元素和它们的相关信息生成索引文件,供其它程序使用。
安装 Ctags
从官网下载 Ctags 可执行文件,网站是 http://ctags.sourceforge.net/
将下载到的文件(仅 EXE 文件即可)解压到一个目录,例如 F:/ctags
将该目录加入环境变量 PATH
准备索引文件
以生成 C++ 标准库索引文件为例:
下载专为 Ctags 修改过的 libstdc++ 头文件
将其解压到一个目录,例如 F:/ctags/cpp_src
使用命令行进入 F:/ctags/cpp_src 后执行:
ctags -R –sort=1 –c++-kinds=+p –fields=+iaS –extra=+q –language-force=C++ -f cpp .
建议将上一步生成的 F:/ctags/cpp_src/cpp 文件放到一个专门放置索引文件的目录以便后面的统一设置,例如放到 F:/ctags/tags
其它库的索引文件也可以依法炮制,只需切换到该库的 include 文件夹,执行:
ctags -R –sort=yes –c++-kinds=+p –fields=+iaS –extra=+q –language-force=C++ -f <文件名> .
安装 OmniCppComplete
下载 OmniCppComplete
将下载到的文件解压到 ~/.vim (unix) 或者 %HOMEPATH%\vimfiles (Windows) 文件夹
在 vimrc 文件中加入
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
另外,还需确认在 vimrc 中开启了 filetype 选项,不然 OmniComplete 无法自动识别 C/C++ 文件类型进行补全。
这样,在插入模式编辑 C/C++ 源文件时按下 . 或 -> 或 ::,或者手动按下 Ctrl+X Ctrl+O 后就会弹出自动补全窗口,此时可以用 Ctrl+N 和 Ctrl+P 上下移动光标进行选择。
这样,一个精简的IDE就完成了。
博主的vimrc
可以看见vim简洁高效的界面和不错的缩进功能。
debug功能
一、安装gvim
下载资源并安装
百度云下载网址http://pan.baidu.com/share/link?shareid=365469&uk=2970460274
二、配置c++环境
1,首先下载安装MinGW,下载地址在http://sourceforge.net/projects/mingw/。这个是边下载边安装的,下载完成即安装完成。我的安装目录是F:\MinGW。
2,设置环境变量。右击我的电脑,点属性->高级->环境变量。然后:
1、在PATH里加入F:\MinGW\bin,记得,如果里面还有其他的变量,记得要加个分号啊,分号得在英文输入模式下输入的。
2、新建LIBRARY_PATH变量,如果有的话,在值中加入F:\MinGW\lib,这是标准库的位置。
3、新建C_INCLUDEDE_PATH变量,值设为F:\MinGW\include。
4、新建CPLUS_INCLUDE_PATH变量,值为F:\MinGW\include;F:\MinGW\include\c++\4.5.0;F:\MinGW\include\c++\4.5.0\backward;F:\MinGW\include\c++\4.5.0\mingw32
具体路径请根据你的MinGW选择。
3、在你的_vimrc文件中配置编译调试选项。
“定义CompileRun函数,用来调用进行编译和运行
func CompileRun() exec “w” “C程序 if &filetype == ‘c’ exec “!gcc -Wall -enable-auto-import % -g -o %<.exe” “c++程序 elseif &filetype == ‘cpp’ exec “!g++ -Wall -enable-auto-import % -g -o %<.exe” “Java程序 elseif &filetype == ‘java’ exec “!javac %” endif endfunc “结束定义CompileRun “定义Run函数 func Run() if &filetype == ‘c’ || &filetype == ‘cpp’ exec “!%<.exe” elseif &filetype == ‘java’ exec “!java %<” endif endfunc “定义Debug函数,用来调试程序 func Debug() exec “w” “C程序 if &filetype == ‘c’ exec “!gcc % -g -o %<.exe” exec “!gdb %<.exe” elseif &filetype == ‘cpp’ exec “!g++ % -g -o %<.exe” exec “!gdb %<.exe” “Java程序 elseif &filetype == ‘java’ exec “!javac %” exec “!jdb %<” endif endfunc “结束定义Debug “设置程序的运行和调试的快捷键F5和Ctrl-F5 map <F5> :call CompileRun()<CR> map <F6> :call Run()<CR> map <C-F5> :call Debug()<CR>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
可能遇到的问题:
编译的时候可能会出现:
Info: resolving std::cout by linking to __imp___ZSt4cout (auto-import)
c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: warning: a
uto-importing has been activated without –enable-auto-import specified on the c
ommand line.
This should work unless it involves constant data structures referencing symbols
from auto-imported DLLs.)
在编译命令中加入 -enable-auto-import
三、自动补全
一些代码缩进和其他例如括号自动补全等只需在vimrc配置文件加上相应配置代码即可,最后博主会上传博主自己的vimrc配置代码(较适合于比赛)。接下来是代码自动补全插件的安装:
参考自:http://timothyqiu.com/archives/using-omnicomplete-for-c-cplusplus-in-vim/
OmniComplete 并不是插件的名字,而是 Vim 众多补全方式中的一种(全能补全)。说白了 OmniComplete 其实就是根据光标前的内容猜测光标后的内容,具体怎么猜取决于所采用的脚本。
而 OmniCppComplete 就是专为 C/C++ 编写的 OmniComplete 一个补全脚本。
那么经常和 OmniCppComplete 一起出没的 Ctags 又是什么呢?Ctags 全名 Exuberant Ctags,是一个独立的程序(也就是说,其实和 Vim 一点关系都没有)。它可以为各种语言的源代码生成语言元素(language object)索引文件。对于 C/C++ 来说,就是把源代码中的各种宏、函数、类、类成员等等元素和它们的相关信息生成索引文件,供其它程序使用。
安装 Ctags
从官网下载 Ctags 可执行文件,网站是 http://ctags.sourceforge.net/
将下载到的文件(仅 EXE 文件即可)解压到一个目录,例如 F:/ctags
将该目录加入环境变量 PATH
准备索引文件
以生成 C++ 标准库索引文件为例:
下载专为 Ctags 修改过的 libstdc++ 头文件
将其解压到一个目录,例如 F:/ctags/cpp_src
使用命令行进入 F:/ctags/cpp_src 后执行:
ctags -R –sort=1 –c++-kinds=+p –fields=+iaS –extra=+q –language-force=C++ -f cpp .
建议将上一步生成的 F:/ctags/cpp_src/cpp 文件放到一个专门放置索引文件的目录以便后面的统一设置,例如放到 F:/ctags/tags
其它库的索引文件也可以依法炮制,只需切换到该库的 include 文件夹,执行:
ctags -R –sort=yes –c++-kinds=+p –fields=+iaS –extra=+q –language-force=C++ -f <文件名> .
安装 OmniCppComplete
下载 OmniCppComplete
将下载到的文件解压到 ~/.vim (unix) 或者 %HOMEPATH%\vimfiles (Windows) 文件夹
在 vimrc 文件中加入
" ctags 索引文件 (根据已经生成的索引文件添加即可) set tags+=D:/ctags/tags/cpp " OmniCppComplete let OmniCpp_NamespaceSearch = 1 let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_ShowPrototypeInAbbr = 1 " 显示函数参数列表 let OmniCpp_MayCompleteDot = 1 " 输入 . 后自动补全 let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全 let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全 let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] " 自动关闭补全窗口 au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif set completeopt=menuone,menu,longest1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
另外,还需确认在 vimrc 中开启了 filetype 选项,不然 OmniComplete 无法自动识别 C/C++ 文件类型进行补全。
这样,在插入模式编辑 C/C++ 源文件时按下 . 或 -> 或 ::,或者手动按下 Ctrl+X Ctrl+O 后就会弹出自动补全窗口,此时可以用 Ctrl+N 和 Ctrl+P 上下移动光标进行选择。
这样,一个精简的IDE就完成了。
博主的vimrc
set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set diffexpr=MyDiff() function MyDiff() let opt = '-a --binary ' if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif let arg1 = v:fname_in if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif let arg2 = v:fname_new if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif let arg3 = v:fname_out if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif let eq = '' if $VIMRUNTIME =~ ' ' if &sh =~ '\<cmd' 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 "定义CompileRun函数,用来调用进行编译和运行 func CompileRun() exec "w" "C程序 if &filetype == 'c' exec "!gcc -Wl,-enable-auto-import % -g -o %<.exe" "c++程序 elseif &filetype == 'cpp' exec "!g++ -Wl,-enable-auto-import % -g -o %<.exe" "Java程序 elseif &filetype == 'java' exec "!javac %" endif endfunc "结束定义CompileRun "定义Run函数 func Run() if &filetype == 'c' || &filetype == 'cpp' exec "!%<.exe" elseif &filetype == 'java' exec "!java %<" endif endfunc "定义Debug函数,用来调试程序 func Debug() exec "w" "C程序 if &filetype == 'c' exec "!gcc % -g -o %<.exe" exec "!gdb %<.exe" elseif &filetype == 'cpp' exec "!g++ % -g -o %<.exe" exec "!gdb %<.exe" "Java程序 elseif &filetype == 'java' exec "!javac %" exec "!jdb %<" endif endfunc "结束定义Debug "设置程序的运行和调试的快捷键F5和Ctrl-F5 map <F5> :call CompileRun()<CR> map <F6> :call Run()<CR> map <C-F5> :call Debug()<CR> :set number " Vim color file " Maintainer: Bram Moolenaar <Bram@vim.org> " Last Change: 2006 Apr 14 " This color scheme uses a dark grey background. " First remove all existing highlighting. set background=dark hi clear if exists("syntax_on") syntax reset endif let colors_name = "evening" hi Normal ctermbg=DarkGrey ctermfg=White guifg=White guibg=grey20 " Groups used in the 'highlight' and 'guicursor' options default value. hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White hi IncSearch term=reverse cterm=reverse gui=reverse hi ModeMsg term=bold cterm=bold gui=bold hi StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold hi StatusLineNC term=reverse cterm=reverse gui=reverse hi VertSplit term=reverse cterm=reverse gui=reverse hi Visual term=reverse ctermbg=black guibg=grey60 hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red hi Cursor guibg=Green guifg=Black hi lCursor guibg=Cyan guifg=Black hi Directory term=bold ctermfg=LightCyan guifg=Cyan hi LineNr term=underline ctermfg=Yellow guifg=Yellow hi MoreMsg term=bold ctermfg=LightGreen gui=bold guifg=SeaGreen hi NonText term=bold ctermfg=LightBlue gui=bold guifg=LightBlue guibg=grey30 hi Question term=standout ctermfg=LightGreen gui=bold guifg=Green hi Search term=reverse ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black hi SpecialKey term=bold ctermfg=LightBlue guifg=Cyan hi Title term=bold ctermfg=LightMagenta gui=bold guifg=Magenta hi WarningMsg term=standout ctermfg=LightRed guifg=Red hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black hi Folded term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue hi FoldColumn term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue hi DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue hi DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta hi DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan hi CursorColumn term=reverse ctermbg=Black guibg=grey40 hi CursorLine term=underline cterm=underline guibg=grey40 " Groups for syntax highlighting hi Constant term=underline ctermfg=Magenta guifg=#ffa0a0 guibg=grey5 hi Special term=bold ctermfg=LightRed guifg=Orange guibg=grey5 if &t_Co > 8 hi Statement term=bold cterm=bold ctermfg=Yellow guifg=#ffff60 gui=bold endif hi Ignore ctermfg=DarkGrey guifg=grey20 " vim: sw=2 set wrap " 长行自动折行 set number " 显示行号 set cursorline " 突出显示当前行 set tabstop=4 " 设置tab键的宽度 set backspace=2 " 设置退格键可用 syn on " 打开语法高亮 set showmatch " 设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号 set smartindent " 智能对齐方式 set shiftwidth=4 " 换行时行间交错使用4个空格 set autoindent " 自动对齐 set ai! " 设置自动缩进 set cindent " 以c/c++的模式缩进 filetype plugin indent on " 开启插件 set completeopt=longest,menu " ctags 索引文件 (根据已经生成的索引文件添加即可) set tags+=F:/Ctags/tags/cpp " OmniCppComplete let OmniCpp_NamespaceSearch = 1 let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_ShowPrototypeInAbbr = 1 " 显示函数参数列表 let OmniCpp_MayCompleteDot = 1 " 输入 . 后自动补全 let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全 let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全 let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] " 自动关闭补全窗口 au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif set completeopt=menuone,menu,longest filetype plugin indent on " 括号自动补全 inoremap ( ()<ESC>i inoremap [ []<ESC>i inoremap { {<CR>}<ESC>kA<CR> " inoremap < <><ESC>i map <f2> :call SetTitle()<CR> func SetTitle() let l = 0 let l = l + 1 | call setline(l, '/*') let l = l + 1 | call setline(l, ' * Author: ktmzgl') let l = l + 1 | call setline(l, ' * Created Time: '.strftime('%c')) let l = l + 1 | call setline(l, ' * File Name: '.expand('%')) let l = l + 1 | call setline(l, ' */') let l = l + 1 | call setline(l, '#include <iostream>') let l = l + 1 | call setline(l, '#include <cstdio>') let l = l + 1 | call setline(l, '#include <cstdlib>') let l = l + 1 | call setline(l, '#include <cstring>') let l = l + 1 | call setline(l, '#include <cmath>') let l = l + 1 | call setline(l, '#include <algorithm>') let l = l + 1 | call setline(l, '#include <string>') let l = l + 1 | call setline(l, '#include <vector>') let l = l + 1 | call setline(l, '#include <stack>') let l = l + 1 | call setline(l, '#include <queue>') let l = l + 1 | call setline(l, '#include <set>') let l = l + 1 | call setline(l, '#include <time.h>') let l = l + 1 | call setline(l, 'using namespace std;') let l = l + 1 | call setline(l, 'const int maxint = -1u>>1;') let l = l + 1 | call setline(l, '') let l = l + 1 | call setline(l, 'int main() {') let l = l + 1 | call setline(l, ' return 0;') let l = l + 1 | call setline(l, '}') let l = l + 1 | call setline(l, '') endfunc
相关文章推荐
- windows配置gvim高效率编程(c&c++)带自动补全代码
- 基于visual c++之windows核心编程代码分析(60)实现系统盘定制与软件自动安装
- 配置Eclipse 实现按任意键代码自动补全
- vim7.2 代码自动补全的配置
- eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)?
- windows下用vim实现qt代码的自动补全功能
- 基于visual c++之windows核心编程代码分析(60)实现系统盘定制与软件自动安装
- vim自动补全代码(代码提示)以及我的vim配置文件
- Eclipse代码补全 及 空格键 "="键自动上屏问题
- Eclipse开发android应用(字体背景配置,代码,xml 自动补全)配置
- Emacs配置C/C++-mode的代码智能提示和自动补全
- 配置Eclipse 实现按任意键代码自动补全
- gvim---配置自动代码提示
- 配置Eclipse 实现按任意键代码自动补全
- windows下用vim实现qt代码的自动补全功能(zz)
- 配置Eclipse 实现按任意键代码自动补全
- .net项目配置文件导致runat="server"无效,不能自动生成声明代码的问题
- vim自动补全代码(代码提示)以及我的vim配置文件
- 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
- eclipse配置代码自动补全auto-completion