现场赛 vim 配置,仅 12 行,配置只需 1 分钟!

普通 vim 玩家也能应付平时使用

为什么用 vim?

我用 vim,基于以下几个原因

  • axp 学长推荐 (axpnb!)
  • 现场赛使用的系统基本都是Ubuntu,基本都提供了vim
  • 遇到过很多现场赛有人反映/队友亲测 CodeBlocks 崩溃/卡顿,vim 稳定性杰出
  • 提高Linux姿势,遇到只有系统自带记事本的环境也不虚 (x
  • 快速编辑,例如我常用的*dd/*yyp组合技

基本操作

首先用vim创建并编辑.vimrc文件 (完整路径~/.vimrc)

1
vim .vimrc

.vimrc本体

1
2
3
4
5
6
7
8
9
10
11
12
syntax on                                      " 高亮
set nu " 行号
set smarttab " tab长度适配
set tabstop=4 " tab长度
set shiftwidth=4 " 自动补齐的tab长度
set cindent " 缩进
set mouse=a " 鼠标定位
map <F9> :call CR()<CR> " 一键编译运行
func! CR() " 编译运行函数
exec "w" " 保存文件
exec "!g++ -O2 -std=c++11 % -o %< && ./%<" " g++编译命令,开O2优化和c++11
endfunc

一些啰嗦

七行配置,五行编译。

显示相关两行,tab 相关三行,顺便缩进。

不要鼠标定位也可以,熟练使用hjkl移动。

写快捷键映射的时候,不知道哪里打空格,就每隔一个词打一个。

%是当前文件名,%<是去后缀的当前文件名。熟练使用g++,想要怎么编译倒回去代入即可。然后&& ./%<执行编译输出的可执行文件。

扩展: 一键复制

有些比赛需要复制代码到网页提交。以下介绍如何复制全部代码。

在 vim 里操作,一般模式(按 esc 以后)键入gg(区分大小写),跳转到第一行。

键入V进入可视模式 (按行选中)

键入G跳转到最后一行

键入"+y将选中内容复制到剪贴板

写成一句话加在.vimrc后面,就是

1
map <C-A> : ggVG"+y

扩展: Python

利用&filetype判断文件类型,使用不同的指令

一般比赛想用python3.x的话,3 是需要写的。手抖忘写,python 报错,队友两行泪。

.vimrc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
syntax on
set nu
set smarttab
set tabstop=4
set shiftwidth=4
set cindent
set mouse=a
map <F9> :call CR()<CR>

func! CR()
exec "w"
if &filetype=='cpp'
exec "!g++ -O2 -std=c++11 % -o %< && ./%<"
elseif &filetype=='python'
exec "!python3 %"
endif
endfunc

6/12/2019补充

前几天上班配.ideavimrc时候发现的配置,和 WorldFinal 直播时看到的效果如出一辙,特此记录:

1
set relativenumber

用于显示相对行号,方便jyydd等操作