刚换完Linux,趁着教练给的改题时间(T2确实猛)自己上网找了好多博客,发现很多跟竞赛有关的内容是碎片化的,从最基本的如何用vim写代码、编译、运行,再到怎么改设置使打代码时手感强一些,最后学对拍,用了小半天,总结一下。

基本操作:

vim的大部分操作需要在终端上进行,说白了就是在终端上写代码(尽管这种说法可能不甚严谨),下面介绍比赛时的基本操作,图文均有。

1、打开终端。

同时按下Alt、Ctrl以及t。

2、一些辅助操作:

1>查看list(简单理解就是文件(夹)目录), 在终端输入指令 ls

可以帮我们看看我们是否成功新建文件夹。

2>创建文件夹,在终端输入指令mkdir+文件夹名

竞赛时有的比赛是不给选手提前建好文件夹的,自己建呗,而且可以把一些码块(对拍的一套)装在一起。

3>进入文件夹,在终端输入指令 cd+文件夹名

然后由于我们初学,我们会很担心自己的操作是否成功,所以我们可以去点击左上角“应用程序”->"文件"->"Yushi",如图:

另外,由于博主的linux没有多少插件(也许是这个原因吧),博主无法在vim中把代码复制出来,所以,我们打完代码交oj的时候,就可以从这里直接打开文件进行复制,如果读者感兴趣以及有条件,那么请自己去查询资料,学习指令,尝试在vim中把信息直接提取出来,请谅解。

3、开启代码之旅

首先打开vim,在终端中输入vim xx.cpp,如图:

进入后发现什么都干不了,不急,按一下i,进入插入模式,如图:

然后打一手a+b problem(此时你的手感应该不太好)

看到左下角的“wq”了吗?意思是保存并退出,首先按下“Esc"退出插入模式,然后按下“:”,输入“wq”即可,另外“w“是保存,”q"是退出,读者可以自行尝试一些命令,毕竟探索也是竞赛的一部分,虽然有些费时间。

然后我们看一下文件夹:

这样就可以点开复制啦(略心塞)。

然后编译,在终端输入g++(编译语言)xx.cpp(刚写的代码)-o(记住就完事了)xx(一般这么打,比较符合习惯,具体原理不讲),如图:

编译失败,则在终端输出错误信息,否则成功,看一眼文件夹:

那个小齿轮看来跟exe文件有些相似(也许吧)。

接着运行,输入./xx(xx就是你刚建的那个齿轮),如图:

输入样例(不要在意上面的那一堆,a+b打错了……)

好了成功,去文件夹打开文件上交oj,应该能A吧(有点虚,没long long)。

修改设置

接着来讲一下怎么提高手感,首先强调一下,平时练习时就尽量别安装插件,因为你不知道比赛时的配置,记一些简单的命令即可,没必要改的异常华丽。另外经过博主测试,当你把上一次的代码粘进来(复制不行粘贴竟然可以,有些出乎意料),如果你有以下的修改操作,那么后果就是代码错行,非常难受,读者可以自己去尝试一下。以下的设置仅供参考,更详细的命令可以查阅资料,博主进给出一些自己明白是什么意思的命令,别的好命令再去尝试吧。(一定记住先粘进来再该设置)。

首先打开vimrc,具体操作如下(我也不懂为什么)在终端输入vim ~/. vimrc,注意“/”和“.”一定别打反,如图:

然后打上如下代码(注意图文不符):

set nu //不要打这些注释……//显示行号
set mouse=a //鼠标使用
set tabstop= //tab缩进为2(不严谨)
imap [ []<ESC>i //把[映射为[]
imap ( ()<ESC>i //同上
imap { {}<ESC>i
imap " ""<ESC>i
imap ' ''<ESC>i

wq保存,然后再打代码时就比较舒服了,推荐提前在自己的博客等位置复制一份,直接粘(当然你有硬盘保护的话)。

autoindent和smartindent是自动/智能缩进,重新打代码时加上比较好,复制进vim时不要有(有解决办法请留言解决补充)。

还有一种操作,在vim打代码时,在普通模式(就是没进插入模式之前)输入:set autoindent这类操作也是可以的,但是等你wq后再进来,就没有了(反正我是这个情况),所以长时间训练还是vimrc好。

对拍

首先,请确保在阅读下面文字之前学会如何在windows系统下进行对拍,最基础的fc,system,rand等一定要会。没有基础的读者,请移步别的博客,博主目前没有写对拍的想法,在此抱歉。

1、写出正确的解法(一般纯暴力)(这里用std表示),如图:

2、写出自己的解法(用vio表示)(感觉有些奇怪,读者自己去改名吧,随自己喜好),如图:

3、根据题意写数据生成器(用rand表示),如图:

4、对拍的运行程序,读者可以根据自己的需要去添加诸如运行时间(ctime,clock),测试点数等,这里仅给出普通的Ac,Wa0。请仔细阅读下图,看一看linux对拍与windows对拍的区别:

首先运行程序需要“./”,阅读完上文,读者应该可以理解。剩下的就是把fc->diff,还是,比对相同时返回0。

在运行上图代码片之前,要对所有的子程序进行编译,在程序旁边的文件夹背景中已经给出示范(编译错名字一定要及时改,其实挺坑的)。

然后./pair运行一下。

对拍成功。

linux再新奇也仅仅是一种系统,并不是竞赛研究的方向,只要学会基础操作和对拍方式就足够,没有必要花时间去弄一些毫无价值(最起码当前来说是的)的东西。希望对读者有些许帮助。

竞赛Noi_Linux使用总结(vim)的更多相关文章

  1. 如何创建Vim Dotfile?

    Dotfile是电脑系统里的隐藏文件,它是专门给更高级的用户,如开发者.程序员或工程师使用的,让他们用来调整系统.如何创建Vim-Dotfile? 可以参考以下步骤: 1. 首先,你要检查一下.vim ...

  2. 玩转Vim 编辑器

    一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...

  3. vim安装中文帮助手册

    安装方法:   在下面的网站下载中文帮助的文件包:$wget http://nchc.dl.sourceforge.net/sourceforge/vimcdoc/vimcdoc-1.5.0.tar. ...

  4. vim环境变量配置、背景色配置

    我们使用vi或者vim的时候,如果想要显示行号,可能会这样做:切换到命令模式,然后输入set nu,再按回车键就显示了:还有就是咱们在编写程序的时候,有的时候会希望按下回车键后,光标不是每次都在行首, ...

  5. vim+vundle配置

    Linux环境下写代码虽然没有IDE,但通过给vim配置几个插件也足够好用.一般常用的插件主要包括几类,查找文件,查找符号的定义或者声明(函数,变量等)以及自动补全功能.一般流程都是下载需要的工具,然 ...

  6. 萌新笔记——vim命令“=”、“d”、“y”的用法(结合光标移动命令,一些场合会非常方便)

    vim有许多命令,网上搜有一堆贴子.文章列举出各种功能的命令. 对于"="."d"."y",我在无意中发现了它们所具有的相同的一些用法,先举 ...

  7. VIM教程

    vim 的环境设定参数 :set nu :set nonu             就是设定与取消行号啊! :set hlsearch :set nohlsearch     hlsearch 就是 ...

  8. 在 Linux 打造属于自己的 Vim

    Linux 系统中很多东西都是以脚本代码.配置文件的形式存在,使用 Linux 系统时,需经常对这些文件进行编辑.很显然,如果没有文本编辑器,江湖之路寸步难行. 我的选择是 Vim.Vim 是 Lin ...

  9. 感悟 GNU C 以及将 Vim 打造成 C/C++ 的半自动化 IDE

    C 语言在 Linux 系统中的重要性自然是无与伦比.不可替代,所以我写 Linux 江湖系列不可能不提 C 语言.C 语言是我的启蒙语言,感谢 C 语言带领我进入了程序世界.虽然现在不靠它吃饭,但是 ...

随机推荐

  1. 【SpringCloud构建微服务系列】Feign的使用详解

    一.简介 在微服务中,服务消费者需要请求服务生产者的接口进行消费,可以使用SpringBoot自带的RestTemplate或者HttpClient实现,但是都过于麻烦. 这时,就可以使用Feign了 ...

  2. 【微信公众号开发】根据openId群发消息

    根据开发文档可知,只要使用POST方式提交固定格式的json字符串到那个地址即可.这里我写的是最简单的文本 第一步:建立对应的实体类. package cn.sp.bean; import java. ...

  3. python_pdb断点调试常用命令

    Python pdb调试 在需要断点调试的地方,加上:import pdb;pdb.set_trace() h:打印当前版本pdb可用的命令,如果需要查询某个命令,可以输入 h [command]l: ...

  4. 《Windows核心编程系列》十四谈谈默认堆和自定义堆

    堆 前面我们说过堆非常适合分配大量的小型数据.使用堆可以让程序员专心解决手头的问题,而不必理会分配粒度和页面边界之类的事情.因此堆是管理链表和数的最佳方式.但是堆进行内存分配和释放时的速度比其他方式都 ...

  5. Python实现判断回文串

    回文数的概念:即是给定一个数,这个数顺读和逆读都是一样的.例如:121,1221,a,aa是回文数,123,1231不是回文数.  while 1: String = input('请先输入一个字符串 ...

  6. html 测试

    斯蒂芬斯蒂芬 20:23你过来吧,我们好好谈一谈 好好学习 21:22这是一个无法避免的错误 作为一个新手,我在学习HTML文件的格式,我觉得博客园的编辑器很棒, 查看这些源代码让我学习到了许多知识. ...

  7. asp.net网站接入QQ登录

    这两天在做网站第三方登录,总结一下QQ登录吧,支付宝就不用了(下载dome把ID什么的换一换就基本可以了.),本文主要说的是代码的实现方式,逻辑部分主要还是根据帮助文档来的.不懂的同学可以先看看文档. ...

  8. JAVA 高级特性 JDBC

     需要的jdbc jar 包: mysql-connector-java-5.1.38-b...960.9 KB ojdbc6.jar2.0 MB sqljdbc4.jar455.4 KB   数据持 ...

  9. 详解Android Activity启动模式

    相关的基本概念: 1.任务栈(Task)   若干个Activity的集合的栈表示一个Task.   栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于 ...

  10. C#方法参数关键字

    一.params关键字 prams告诉函数的调用者,该函数的参数数量是可变,如果调用函数的参数标识了params关键字,那么我们可以使用逗号分割的参数或者一个数组来作为参数: 1.这里只能是数组,Li ...