test

应大家的要求,写一篇博客来介绍下vim在ACM中的简单使用。

写本文的目的,只是为了给广大acmer一个入门vim的指导。不喜勿喷! 不想看到的请远离!

vim大法好,远离sublime、cb保平安!

从13年开始,平时写程序和比赛都是用的vim,也一直在推荐大家使用vim,至于为何要用vim,原因很多。

为何要使用vim?1) 可以装逼,vim显得高端大气上档次,现场赛你打开的是丑陋的CB,别人打开的是VIM,高下立判。 2) 用vim可以明显提高写代码的感觉,加快代码速度。3) vim大法好。

当然,前面纯粹个人胡扯,要用啥都是个人偏好而已。

下面简单介绍VIM的使用。

比赛篇

首先介绍vim在比赛使用的使用。

先大致介绍现场赛vim的配置方法。

现场赛比赛系统是ubuntu, 都是安装好了vim的。

ubuntu系统下打开终端(终端一般在左侧有了,没有就按Ctrl+Alt+T启动,然后可以锁定在左侧),打开终端输入vim就进入vim了。

配置方法是输入 vim ~/.vimrc (这样是用vim编辑配置文件,或者用 gedit ~/.vimrc 就是用gedit编辑了)

配置的话,按照自己习惯加几句配置文件就可以使用了。

我一般配置下面几个:

C++

syntax on set nu set tabstop=4 set shiftwidth=4 colo evening set mouse=a set cin

			<table class="crayon-table" >
				<tr class="crayon-row" >

1

2

3

4

5

6

7

syntax on

set nu

set tabstop=4

set shiftwidth=4

colo evening

set mouse=a

set cin

上面这几个配置的具体含义可以去百度下,有的也是可以不要的。

然后配置以后保存。VIM的配置就结束了。

然后在终端里面 输入 vim A.cpp 然后就开始写代码了。

编译运行的话,可以另外打开一个终端(就是左侧右击,然后new一个出来),就可以一边编辑,一遍保存了。

但是注意在代码编译以后,一定要 :w 来保存下,然后进行编译运行。

编译可以输入 g++ A.cpp -o A

如果没有错就可以了。

然后输入 ./A 来运行,然后输入数据啥的,退出的话是 按 Ctrl+C

VIM入门篇

简明Vim练级攻略 把这上面教的VIM命令都熟悉下,差不多就可以了。

VIM命令很多,但是一开始常用的就那么几个吧,需要的指令慢慢积累就会了。

如果你的系统是WINDOWS,那可以安装一个GVIM,进行学习,用来平时写代码。

下载链接:here 进去后点击左侧的Download, 然后选择

这个进行下载。 下载以后进行安装。

安装后桌面出现好几个快捷方式,有用的就gVim 7.4, 其余可以删除。

GVIM就直接点开就可以写了。一般是新建一个文本,改名为A.cpp, 然后打开Gvim, 把A.cpp拖入Gvim ,然后就可以进行编辑了。

Gvim的配置,就是在安装目录那有一个 _vimrc文件,编辑这个文件,在后面添加一些你自己需要的配置。

我的配置如下: (加到_vimrc后面)

C++

set nu set history=1000000 set tabstop=4 set shiftwidth=4

set smarttab

set cindent

colo evening

set showcmd

set nobackup set noswapfile

set mouse=a

map :call CR() func! CR() exec "w" exec "!g++ -O2 -g % -o %<" exec "! %<" endfunc

imap <c-]> {}O

map ggVG"+y

"inoremap ( () "inoremap [ [] "inoremap { {} "inoremap " "" "inoremap ' ''

map :call SetTitle() func SetTitle() let l = 0 let l = l + 1 | call setline(l,'/* ') let l = l + 1 | call setline(l,'Author :kuangbin') 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 ') let l = l + 1 | call setline(l,'#include ') let l = l + 1 | call setline(l,'#include ') let l = l + 1 | call setline(l,'#include ') let l = l + 1 | call setline(l,'#include ') let l = l + 1 | call setline(l,'#include ') let l = l + 1 | call setline(l,'#include ') 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

			<table class="crayon-table" >
				<tr class="crayon-row" >

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

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

set nu

set history=1000000

set tabstop=4

set shiftwidth=4

set smarttab

set cindent

colo evening

set showcmd

set nobackup

set noswapfile

set mouse=a

map :call CR()

func! CR()

exec "w"

exec "!g++ -O2 -g % -o %<"

exec "! %<"

endfunc

imap <c-]> {}O

map ggVG"+y

"inoremap ( ()

"inoremap [ []

"inoremap { {}

"inoremap " ""

"inoremap ' ''

map :call SetTitle()

func SetTitle()

let l = 0

let l = l + 1 | call setline(l,'/* ***********************************************')

let l = l + 1 | call setline(l,'Author :kuangbin')

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 ')

let l = l + 1 | call setline(l,'#include ')

let l = l + 1 | call setline(l,'#include ')

let l = l + 1 | call setline(l,'#include ')

let l = l + 1 | call setline(l,'#include ')

let l = l + 1 | call setline(l,'#include ')

let l = l + 1 | call setline(l,'#include ')

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

里面的配置可以自己修改,可以加一些快捷键之类的。 我的配置文件是 按F2,自动写好头文件之类的信息,然后按F6进行编译运行。

平时用起来都很方便。

欢迎进行交流讨论!

(加群请写点验证信息)

此外最近新建了一个QQ群。 如果是自以为很牛逼的人,请别加!

181826055 (ACM交流群, 我新建的QQ群,目的是进行交流ACM相关算法,共同提高,不喜勿加! 太NB的不要加!禁止D人。)

旨在构建一个最和谐的ACM交流群~~~ 维护一个和谐的群环境,交流讨论算法相关。