为了从codd::blocks平台转移到vim,最近几天花了好久研究vim,虽然也没有学会什么奇技淫巧,但是终于可以编译c++文件了。
vim和ide比起来,就是秒开,实在受不了vs的庞大,cb的丑陋。
安装并配置gcc环境
gcc可以用CodeBlocks的目录下的MinGW,也可以从网上下一个重新安装(gcc下载地址)
接下来是依次打开计算机->系统属性->高级系统设置->高级->环境变量->用户变量->变量PATH(如果没有自己新建一个)->编辑写下MinGW的bin文件夹地址,我的是这样C:\MinGW\bin;最后用分号隔开
之后按win(就是Ctrl和alt之间的按键)+r ,输入cmd,再输入g++ -v命令。
如果出现下面的图就可以了
配置vim
打开vim的配置文件_vimrc,一般在vim目录下。
输入将下面代码复制进去,我的设置是按F6编译。
这个文件中用 ” 可以注释
" 编译器选择 map <F6> :call CR()<CR> func! CR() exec "w" exec "!g++ -O2 -g % -o %<" exec "! %<" "exec "!g++ % -o %<"
"exec "! ./%<
endfun
3.写程序
一般可以在桌面上新建一个txt文件,再将它改名程a.cpp之类的直接拖进vim里面来写,还可以配置_vimrc文件来一键生成头文件之类的,具体的也是在那个文件中加入下面的代码,按F2可以生成。
模版来自kuangbin大神
"c++的头文件
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 :xryz')
let l = l + 1 | call setline(l,'Email :[email protected]')
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,'')
let l = l + 1 | call setline(l,'#include <stdio.h>')
let l = l + 1 | call setline(l,'#include <string.h>')
let l = l + 1 | call setline(l,'#include <iostream>')
let l = l + 1 | call setline(l,'#include <algorithm>')
let l = l + 1 | call setline(l,'#include <vector>')
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 <map>')
let l = l + 1 | call setline(l,'#include <string>')
let l = l + 1 | call setline(l,'#include <math.h>')
let l = l + 1 | call setline(l,'#include <stdlib.h>')
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,'')
let l = l + 1 | call setline(l,'int main()')
let l = l + 1 | call setline(l,'{')
let l = l + 1 | call setline(l,' //freopen("in.txt","r",stdin);')
let l = l + 1 | call setline(l,' //freopen("out.txt","w",stdout);')
let l = l + 1 | call setline(l,' ')
let l = l + 1 | call setline(l,' return 0;')
let l = l + 1 | call setline(l,'}')
endfunc
再按f6就可以编译了,之后自己看着办吧
最后我的vim配置文件
" 去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
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 " 显示行号 set nu " 历史记录数 set history=1000000 " Tab键的宽度 set tabstop=4 " 统一缩进为4 set shiftwidth=4 " 在行和段开始处使用制表符 set smarttab " 自动缩进 set autoindent set cindent " 配色主题 colo evening set guifont=monaco:h10 " 输入的命令显示出来,看的清楚些 set showcmd " 从不备份,禁止生成临时文件 set nobackup set noswapfile " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) set mouse=a " 编译器选择 map <F6> :call CR()<CR> func! CR() exec "w" exec "!g++ -O2 -g % -o %<" exec "! %<" "exec "!g++ % -o %<" "exec "! ./%< endfunc imap <c-]> {<cr>}<c-o>O<left><right> map <C-A> ggVG"+y "inoremap ( ()<LEFT> "inoremap [ []<LEFT> "inoremap { {}<LEFT> "inoremap " ""<LEFT> "inoremap ' ''<LEFT> "c++的头文件 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 :xryz') let l = l + 1 | call setline(l,'Email :[email protected]') 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,'') let l = l + 1 | call setline(l,'#include <stdio.h>') let l = l + 1 | call setline(l,'#include <string.h>') let l = l + 1 | call setline(l,'#include <iostream>') let l = l + 1 | call setline(l,'#include <algorithm>') let l = l + 1 | call setline(l,'#include <vector>') 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 <map>') let l = l + 1 | call setline(l,'#include <string>') let l = l + 1 | call setline(l,'#include <math.h>') let l = l + 1 | call setline(l,'#include <stdlib.h>') 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,'') let l = l + 1 | call setline(l,'int main()') let l = l + 1 | call setline(l,'{') let l = l + 1 | call setline(l,' //freopen("in.txt","r",stdin);') let l = l + 1 | call setline(l,' //freopen("out.txt","w",stdout);') let l = l + 1 | call setline(l,' ') let l = l + 1 | call setline(l,' return 0;') let l = l + 1 | call setline(l,'}') endfunc " txt高亮设置 "syntax on "filetype plugin on "au BufEnter *.txt setlocal ft=txt set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示 "winpos 5 5 " 设定窗口位置 "set lines=40 columns=155 " 设定窗口大小 "make 运行 :set makeprg=g++\ -Wall\ \ %
新版(未排版)
" 去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 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 " 显示行号
set nu
" 历史记录数 set history=1000000 " Tab键的宽度
set tabstop=4
" 统一缩进为4 set shiftwidth=4 " 在行和段开始处使用制表符
set smarttab
" 自动缩进 set autoindent set cindent " 配色主题
" colo lucius set background=light colorscheme solarized " 默认字体和大小
set guifont=Hack:h13
" 显示输入的命令 set showcmd " 从不备份,禁止生成临时文件
set nobackup
set noswapfile
" 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) set mouse=a " C++,C 的编译设置
map <F9> :call CR()<CR>
func! CR()
exec "w"
exec "!g++ -O2 -g % -o %<"
exec "! %<"
"exec "!g++ % -o %<" "exec "! ./%< endfunc "C,C++的调试
map <F8> :call Rungdb()<CR>
func! Rungdb()
exec "w"
exec "!g++ % -g -o %<"
exec "!gdb ./%<"
endfunc
imap <c-]> {<cr>}<c-o>O<left><right>
inoremap ( ()<LEFT>
inoremap [ []<LEFT>
inoremap { {}<LEFT>
inoremap " ""<LEFT> inoremap ' ''<LEFT> "c++的头文件
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 :xryz')
let l = l + 1 | call setline(l,'Email :[email protected]')
let l = l + 1 | call setline(l,'Blog :htttp://www.xiang578.top')
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,'')
let l = l + 1 | call setline(l,'//#include <stdio.h>')
let l = l + 1 | call setline(l,'//#include <string.h>')
let l = l + 1 | call setline(l,'//#include <iostream>')
let l = l + 1 | call setline(l,'//#include <algorithm>')
let l = l + 1 | call setline(l,'//#include <vector>')
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 <map>')
let l = l + 1 | call setline(l,'//#include <string>')
let l = l + 1 | call setline(l,'//#include <math.h>')
let l = l + 1 | call setline(l,'//#include <stdlib.h>')
let l = l + 1 | call setline(l,'//#include <time.h>')
let l = l + 1 | call setline(l,'#include <bits/stdc++.h>')
let l = l + 1 | call setline(l,'using namespace std;')
let l = l + 1 | call setline(l,'')
let l = l + 1 | call setline(l,'int main()')
let l = l + 1 | call setline(l,'{')
let l = l + 1 | call setline(l,' //freopen("in.txt","r",stdin);')
let l = l + 1 | call setline(l,' //freopen("out.txt","w",stdout);')
let l = l + 1 | call setline(l,' ')
let l = l + 1 | call setline(l,' return 0;')
let l = l + 1 | call setline(l,'}')
endfunc
" 启动的时候不显示那个援助乌干达儿童的提示 set shortmess=atI "make 运行
:set makeprg=g++\ -Wall\ \ %
" 与windows共享剪贴板 set clipboard+=unnamed " 命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
" 为C程序提供自动缩进 set smartindent " 使用C样式的缩进
"set cinden " 语法高亮度显示
syntax on
"设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号 set showmatch "隐藏菜单和具栏
set guioptions-=m
set guioptions-=T
map <silent> <F5> :if &guioptions =~# 'T' <Bar>
\set guioptions-=T <Bar>
\set guioptions-=m <bar>
\else <Bar>
\set guioptions+=T <Bar>
\set guioptions+=m <Bar>
\endif<CR>
filetype off
"Vundle的路径 set rtp+=$VIM/vimfiles/bundle/Vundle.vim "插件的安装路径
call vundle#begin('$VIM/vimfiles/bundle/')
Plugin 'gmarik/Vundle.vim'
Plugin 'L9'
Plugin 'bling/vim-airline'
Plugin 'godlygeek/tabular'
Plugin 'plasticboy/vim-markdown'
Plugin 'altercation/vim-colors-solarized'
"Plugin 'https://github.com/powerline/fonts.git' call vundle#end() filetype plugin indent on " airline设置
set laststatus=2
"使用powerline打过补丁的字体 let g:airline_powerline_fonts = 1 set laststatus=2 set t_Co=256 let g:Powerline_symbols = 'fancy' "set guifont=Consolas\ for\ Powerline\ FixedD:h15
" 开启tabline let g:airline#extensions#tabline#enabled = 1 " tabline中当前buffer两端的分隔字符
"let g:airline#extensions#tabline#left_sep = ' ' " tabline中未激活buffer两端的分隔字符
"let g:airline#extensions#tabline#left_alt_sep = '<' " tabline中buffer显示编号
let g:airline#extensions#tabline#buffer_nr_show = 0
" 映射切换buffer的键位 nnoremap [b :bp<CR> nnoremap ]b :bn<CR> "Vim-Markdown
"1.disable folding let g:vim_markdown_folding_disabled=1 "2.latex
let g:vim_markdown_math=1
"Disable Default Key Mappings let g:vim_markdown_no_default_key_mappings=1 "设置默认编码
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
"解决菜单乱码 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim "解决console输出乱码
language messages zh_CN.utf-8