windows下搭建c++开发环境(MinGW-64 + VIM)

前言

  • c++开发环境的搭建有两种方式,一是安装集成开发环境(IDE),c++有许多IDE。如Code::BlocksDev c++CodeLite
  • 如果你正初学c/c++,那么推荐安装Dev c++,下面的教程可以不看了,这款IDE中文支持良好,体积小,运行速度快,安装过程非常简单,而且使用者多。附上一篇别人的安装教程
  • 但IDE软件大,功能多,不够灵活。如果你想要像打开记事本一样,随手打开一个文本文档就可以编程,或者对VIM情有独钟。这篇文章介绍第二种方法:编译器+编辑器,我认为适合爱折腾的初学者,我做这个主要用于算法学习。

所需文件介绍,及其下载地址

1.编译器: MinGW-64,进入网址后点击Files,文件在该目录下:Toolchains targetting Win64–>Personal Builds–>mingw-builds–>8.1.0–>threads-posix–>seh
这里下载的是64位、seh异常处理机制、POSIX线程的gcc包。
什么是MinGW-64?我也不清楚,只能贴过来一篇文章,c++有很多编译器,其他不做介绍。
2. 编辑器:vim,进入网址后点击Download再点击PC: MS-DOS and MS-Windows,再点击gvim82.exe(ftp)完成下载

MinGW-64安装过程

把下载好的x86_64-8.1.0-release-posix-seh-rt_v6-rev0解压,得到文件夹mingw64,然后把mingw64随便放到一个目录下,把mingw64目录下的bin添加环境变量即可。
我把mingw64放到了E盘,具体操作如下:
1.鼠标右键点击电脑,点击属性
点属性
2.点击高级系统设置
点击高级系统设置
3.点击环境变量
点击环境变量
4.双击path
双击path
5.将bin目录添加到path中,然后全部确定。到此安装完成
添加环境变量
6.测试是否安装完成,在命令行输入gcc -v,可以看到版本信息。gcc -v
7.helloword程序测试,将这段代码写入hello.cpp文件中,把hello.cpp放到桌面,用g++命令编译,生成a.exe文件,执行a.exe输出"HELLO WORLD"。注意了,编译的时候不能使用gcc命令,虽然gcc命令可以编译c++源码,但是它不能自动链接c++的函数库。

#include<iostream>
using namespace std;
int main()
{
 cout<<"HELLO WORLD"<<endl;
 return 0;
}

在这里插入图片描述

vim安装以及配置

  1. 安装 vim
    程序安装:点开gvim82.exe一直下一步就好。安装完成后会生成一系列的vim编辑器
    环境变量配置:和上面MinGW-64配置环境变量一样,把vim目录下的vim82添加到环境变量path中,然后确定。
    什么是vim?vim如何使用?vim学习成本很高,我正在想为什么要写这篇博客,开弓没有回头箭,一直做下去吧,

在这里插入图片描述
2. 把vim打造成为一个c/c++开发的IDE
vim可以通过自己定制,成为一个顺手的c/c++程序编写工具。我不使用插件,只需要修改配置文件,把我的配置文件复制粘贴到vim目录下的_vimrc中,将原来的内容覆盖,就能达到一样的效果。
我要在vim中实现的功能:

  • F2为一键java,c,c++,sh文件添加文件头
    
  • F5一键保存、编译、运行(支持java,c,c++,sh)
    
  • F8编译调试
    
  • 语法高亮。自动识别代码,使用多种颜色显示。
    

  • 配置文件_vimrc内容,下载解压后替换掉原来vim目录下的_vimrc文件也可以。
    这个配置文档是使用"做注释的:
" Vim with all enhancements
source $VIMRUNTIME/vimrc_example.vim

" Remap a few keys for Windows behavior
source $VIMRUNTIME/mswin.vim

" Use the internal diff if available.
" Otherwise use the special 'diffexpr' for Windows.
if &diffopt !~# 'internal'
  set diffexpr=MyDiff()
endif
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 arg1 = substitute(arg1, '!', '\!', 'g')
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg2 = substitute(arg2, '!', '\!', 'g')
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let arg3 = substitute(arg3, '!', '\!', 'g')
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      if empty(&shellxquote)
        let l:shxq_sav = ''
        set shellxquote&
      endif
      let cmd = '"' . $VIMRUNTIME . '\diff"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  let cmd = substitute(cmd, '!', '\!', 'g')
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
  if exists('l:shxq_sav')
    let &shellxquote=l:shxq_sav
  endif
endfunction

" 上面的是默认配置,下面是手动添加的。

set encoding=utf-8	"设置文件的代码形式 utf8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936

set shortmess=atI	" 启动时关闭公益广告

set number		" 显示行号

syntax on		" 打开语法高亮。自动识别代码,使用多种颜色显示。

set t_Co=256		"启用256色

set cursorline		"光标所在行高亮

"set wrap		"自动拆行,一行太长的代码分行显示(已经注释,要使用把set前面的分号删除)


set autoindent		" 自动缩进
 
set cindent
 
set tabstop=4		" Tab键的宽度

set softtabstop=4	" 统一缩进为4
 
set shiftwidth=4
 
set noexpandtab		" 不要用空格代替制表符

set smartindent		" 为C程序提供自动缩进

colorscheme evening	" 设置配色方案

map <C-A> ggVGY		"映射全选 ctrl+A

vmap <C-C> "+y		"映射复制 ctrl+C

map <C-V> "+gP		"映射粘贴ctrl+V

set noundofile		"不生成撤销历史
set nobackup		"不生成备份文件
set noswapfile		"不生成交换文件,主要用于系统崩溃时恢复文件
		

if version >= 603	" 显示中文帮助
    set helplang=cn
    set encoding=utf-8
endif

set noerrorbells	"出错时,不要发出响声
set visualbell		"出错时,发出视觉提示
set history=1000	"Vim 需要记住多少次历史操作

"vim的菜单乱码解决
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

"vim提示信息乱码的解决
language messages zh_CN.utf-8



"C,C++ 按F5编译运行
map <F5> :call CompileRunGcc()<CR>
func CompileRunGcc()
    exec "update"
    if &filetype == 'c'
        exec "!gcc % -o %< & %<"
    elseif &filetype == 'cpp'
        exec "!g++ % -o %< & %<"
    elseif &filetype == 'java' 
        exec "!javac % & java %<"
    elseif &filetype == 'sh'
        exec "!%"
    endif
endfunc
"C,C++的调试
map <F8> :call Rungdb()<CR>
func! Rungdb()
    exec "!g++ % -g -o %<"
    exec "!gdb %<"
endfunc
"按F2给c,c++,java,sh添加文件头
map <F2> :call SetTitle()<CR>
func SetTitle()
    if &filetype == 'c'
        call setline(1,"\#include <stdio.h>")
	call setline(2,"\#include <stdlib.h>")
	call setline(3,"")
	call setline(4,"int main()")
	call setline(5,"{")
	call setline(6,"\tprintf(\"Hello world!\\n\");")
	call setline(7,"\treturn 0;")
	call setline(8,"}")
	call setline(9,"")
    elseif &filetype == 'cpp'
        call setline(1,"\#include <iostream>")
	call setline(2,"")
	call setline(3,"using namespace std;")
	call setline(4,"")
	call setline(5,"int main()")
	call setline(6,"{")
	call setline(7,"\tcout << \"Hello world!\" << endl;")
	call setline(8,"\treturn 0;")
	call setline(9,"}")
	call setline(10,"")
    elseif &filetype == 'java' 
        call setline(1,"public class ".expand("%<")." {")
	call setline(2,"\tpublic static void main(String[] args){")
	call setline(3,"\t\tSystem.out.println(\"Hello World\");")
	call setline(4,"\t}")
	call setline(5,"}")
    elseif &filetype == 'sh'
	call setline(1, "\#!/bin/bash")
	call setline(2, "")
	
    endif
    :$
endfunc

配置这个文件参考了网上许多的资料下面贴出来一些把
Vim 配置入门在VIM下写C++能有多爽Vim的终极配置方案,完美的写代码界面!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值