把vim当主力编辑器搞acm很长一段时间了,用vim的好处不必多说,
在此总结一下ACM中的vim配置方法,配置直接写到 ~/.vimrc 中就可以了.
比赛用的14行配置:
syntax on
set cindent
set nu
set tabstop=4
set shiftwidth=4
set background=dark
map <C-A> ggVG"+y
map <F5> :call Run()<CR>
func! Run()
exec "w"
exec "!g++ -Wall % -o %<"
exec "!./%<"
endfunc
日常用的配置 :
主要多了运行java,一键补全头文件,字体什么的
syntax on
set cindent
set mouse=a
set tabstop=4
set shiftwidth=4
set nu
set nocompatible
set showmode
set showcmd
set ignorecase smartcase
set hlsearch
set autoindent
set smarttab
set smartindent
"colorscheme solarized
set background=dark
set gfn=Source\ Code\ Pro\ 14
map <F5> :call Run()<CR>
func! Run()
exec "w"
if &filetype is 'cpp'|| &filetype is 'c' || &filetype is 'cc'
exec "!clang++ -Wall % -o %<"
exec "!./%<"
elseif &filetype is 'java'
exec "!javac\ -d\ .\ %"
exec "!java\ %<"
endif
endfunc
map <C-A> ggVG"+y
map <F12> :call SetTitle()<CR>
func SetTitle()
let l = 0
let l = l + 1 | call setline(l,'/* ***********************************************')
let l = l + 1 | call setline(l,'Author :CKboss')
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 <iostream>')
let l = l + 1 | call setline(l,'#include <cstdio>')
let l = l + 1 | call setline(l,'#include <cstring>')
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 <cmath>')
let l = l + 1 | call setline(l,'#include <cstdlib>')
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,'')
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
linux系统中用vim写acm代码的说明:
(注:在终端中使用以获得最佳效果)
1.打开终端 mkdir 新建文件夹 , touch 新建文件
2. vim xxx.cpp 然后写代码就可以了
3. 写好了以后直接按<F5>,会自动跳回终端编译并运行,Ctrl-C中断运行并跳回vim
4. 调试好了以后 <Ctrl-A> 复制代码到粘贴板,提交
Kuangbin大神的配置:http://www.kuangbin.net/archives/vim-acmicpc