笔记

Ubuntu及vim、gcc配置笔记

发布于 2018 年 12 月 8 日

一、 前言

最近突然发觉ICPC比赛中的机器都是Ubuntu环境,而我却从来都没有用过Linux操作系统。所以便打算在实验室的电脑上捣鼓一番,熟悉一下比赛中使用的环境。

二、Ubuntu的安装及简单配置

我选择的操作系统是Ubuntu 18.04.1 LTS。从Ubuntu的官网下载系统iso文件之后,用Rufus刻录到一个新买的优盘当作启动盘(其实2G就足够了,但是学校京东竟然已经没有这么小的优盘了)。然后在开机时进入BIOS选择从U盘启动,选择直接覆盖安装Ubuntu,接着就是一顿傻瓜式安装引导,Ubuntu的安装就完成了。

在设置里稍微设置了一下可以自定义的选项。值得一提的是,18.04版本的Ubuntu在安装的时候如果选择了中文,那么他会将/home/下的文件夹也建立成中文的,这会在终端使用过程中导致一系列问题。要解决这个问题,需要在区域与语言设置里,先将系统语言设置成中文并重启,在开机完成后会提示是否要替换成英文文件夹。替换成英文文件夹后再换成中文环境并重启,这次重启后选择保留原样即可保留英文文件夹名称。

三、Code::blocks的安装及简单配置

一开始我是想继续使用code::blocks这样的IDE。但是code::blocks在半个小时之内崩溃了三次让我身心俱疲,于是就进入了vim的大坑。这里还是简单地记录一下code::blocks的安装方法:

(以下安装过程在终端中完成)

CB默认将Xterm作为调试终端,如果想要美化一下,使用Ubuntu的Gnome终端的话,则只需要在CB的环境设置里将Terminal to launch console programs选项栏填写成:gnome-terminal-t $TITLE -x即可。

到此,CB已经基本安装完成,简单设置之后就可以使用辽。但可能是由于兼容性还是什么的问题,我在Ubuntu上使用codeblocks的半小时内codeblocks崩溃了三次。让我十分恐惧,所以就想到用另一个据说会用之后十分好用的编译套装:vim + gcc + gdb

四、vim的安装及配合gcc的简单应用。

很早就听说vim是一个会用之后运笔如飞的文本编辑器,今天终于有机会来使用一波这个广受好评(?)的文本编辑器辽。

vim 的安装与其他软件包无异,没有安装 vim 的机器在终端键入 sudo apt-get install vim 再 y一下即可完成安装。安装完成后,键入 vim ,就可以看到 vim 的主页面 (?) 辽:

VIM标题页
VIM标题页

在 Linux 中, Ctrl + C 可以强制中断进程, Ctrl + Z 可以将进程挂起。当在 vim 里出不去的时候可以用这两个快捷键找出出路(大雾)。

vim 有三种模式:命令模式,输入模式和底线命令模式。

命令模式就是刚启动 vim 的模式。此时的键盘操作会被 vim 识别为命令而不是字符。大小写的i , a , o 分别可以以不同的光标位置进入编辑模式。
输入模式则是编辑文件的模式。此时的键盘操作是正常的操作文件。 Esc 键可以退出到命令模式。
底线命令模式,是在命令模式下输入英文冒号 : 后进入的模式。此模式下,可以使用单个或者多字符命令的模式,可用的命令非常多。 Enter 输入命令后或者 Esc 键可以返回命令模式。

要用 vim 舒服的编辑 cpp 文件,则需要简单的配置一下:

在终端输入 vim ~/.vimrc 就会进入 vim 的配置文件。如果是去参加比赛,不适合仔仔细细地一个一个配置,所以简单地撰写以下内容基本就可以很舒服的写代码了:

vim 常用的快捷键很多,但是比赛时需要用到的命令其实也没有太多:

编写、编译运行一个 cpp 文件的一般流程一般是这样的:

到此,在 Ubuntu 上的编译环境已经基本配置完成,然后就可以在 ICPC 中徜 pa 徉 xing 了。本文为冻葱 Tewi 记录回顾之用,若能够对你的学习工作进程有所帮助,不胜荣幸。

以上。

  1. 冻葱Tewi

    关于自动补全括号的补充:
    ~/.vimrc配置文件中添加

    即可。
    其中inoremap即插入模式(i)下不进行递归(no recursion)的映射(map)
    以上述配置中的小括号为例,key是(,value是先输入()再通过退出编辑模式后按i来进入括号内。
    注:不要映射尖括号< ,否则会引发大小与号的输入问题。

  2. 冻葱Tewi

    ubuntu下,编译时使用新终端标签页体验比新终端窗口更好一些。
    Ctrl + Shift + T打开新标签页,切换时只需Alt + 1,2,3...或者Ctrl + PageUp / PageDown

来一发吐槽