Vim命令行参数与Makefile

如果你刚学习Linux,可以通过本篇来了解Vim与Makefile的基本使用

 

目录

一、Vim是什么?

1.1 Vim概念

1.2vim的使用

1.2.1命令模式

1.2.2输入模式

1.2.3底线命令行模式

二、Makefile/makefile

2.1Makefile编译 

2.2语法规则

2.3变量 

 2.4伪目标.PHONY与all


在Linux下,makefile是一个非常重要的工具,它可以自动化编译和构建过程,但我们需要先进行编辑,这就需要我们先了解vim是什么。 

一、Vim是什么?

 1.1 Vim概念

官方的说法是:Vim 是一个高度可配置的文本编辑器,旨在非常高效地创建和更改任何类型的文本(Vim官网),它对于我们程序开发者来说,是一件非常好用的工具。

那我们了解之后,就可以进行文本编辑,也就是代码编写了

1.2vim的使用

(编写代码时,首先需要创建文件再进行编辑,如果你是小白的话,请看这里Linux基本指令)

 Vim进入文件内部时,我们会发现鼠标和键盘都失效了,我们在键盘上按一下,会出现以下提示

即:光标下没有文件名 

那么这个file name(文件名)是什么呢?接下来我们进行解答

1.2.1命令模式

当我们使用 Vim 进入文件内部,即刚刚启动Vim时,就进入了命令模式

此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令 ,以下是一些基本命令

i 切换到输入模式,在光标当前位置开始输入文本
x 删除当前光标所在处的字符
:

切换到底线命令模式,以在最底一行输入命令

a 进入插入模式,在光标下一个位置开始输入文本
o 在当前行的下方插入一个新行,并进入插入模式
0 在当前行的上方插入一个新行,并进入插入模式
dd

 删除当前行

yy yy -- 复制当前行。
p 粘贴剪贴板内容到光标下方
P 粘贴剪贴板内容到光标上方
u 撤销上一次操作
Ctrl + r 

重做上一次撤销的操作

:w 保存文件
:q

退出 Vim 编辑器

:q! 强制退出Vim 编辑器,不保存修改

(命令模式只有一些最基本的命令,仍要依靠 底线命令行模式 输入更多命令)

当需要编辑文本时,我们按下了 i 进入了输入模式,此时我们输入的都是文本,那么怎样才能再次进入命令模式呢?接下来我们介绍输入模式

 

1.2.2输入模式

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式

如果你是小白,请看下表

ENTER 回车键,换行
BACK SPACE 退格键,删除光标前一个字符
DEL 删除键,删除光标后一个字符
HOME/END 移动光标到行首/行尾
方向键 在文本中移动光标
Page Up/Page Down 上/下翻页
Insert 切换光标为输入/替换模式,光标将变成竖线/下划线
ESC 退出输入模式,切换到命令模式
CRTL+Insert 复制
SHIFT+Insert 粘贴

 

1.2.3底线命令行模式

在命令模式下按下 :(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。基本的命令如下

w 保存文件
q 退出 Vim 编辑器
wq 保存文件并退出 Vim 编辑器
q! 强制退出Vim编辑器,不保存修改

二、Makefile/makefile

首先,Makefile是一个文件,我们了解Vim之后,才能编辑 Mkefile 文件。这个文件名必须叫做Makefile或者makefile,大小写皆可

Makefile,顾名思义,制造文件,那么它是如何制造的呢? 这就要谈到它的编译过程

2.1Makefile编译 

Makefile文件中的命令有一定规范要求,该文件编辑好以后,在Linux命令行中执行一条make命令即可自动编译,编译完成后就会生成我们想要的文件,是不是很神奇?其实不然,Makefile只是实现了我们需要实现的代码,这些代码还是要自己定义。因此,有相应的语法规则

编译的过程可以笼统分为3步

1.make工具读取 makefile 文件,解析其中定义的规则和变量

2.检查依赖关系,即 哪个文件需要编译?生成哪个文件?

3.执行命令,执行我们编写的命令——编译或者删除文件

2.2语法规则

目标: 依赖项
    命令 1
    命令 2   
    ...

目标:生成的文件

如果目标文件的更新时间晚于依赖文件更新时间,则说明依赖文件没有改动,目标文件不需要重新编译。否则会进行重新编译并更新目标文件。Makefile的第一个目标为终极目标(只生成终极目标的文件)

依赖项:目标文件由哪些文件生成,编译我们指定的文件

命令:通过执行命令由依赖文件生成目标文件

注意每条命令之前必须有一个tab保持缩进,这是语法要求(会有一些编辑工具默认tab为4个空格,会造成Makefile语法错误)

2.3变量 

如果每次都需要输入文件名,是一件很麻烦的事,所以,makefile 可以用变量来替代文件名

$符号表示取变量的值,当变量名多于一个字符时,使用"( )"
$符的其他用法

$^ :表示所有的依赖文件

$@ :表示生成的目标文件 

 2.4伪目标.PHONY与all

.PHONY 

用于clean,我们想要删除文件,但规定需要有一个依赖文件,此时我们就可以用伪目标.PHONY

 此时clean为依赖文件,.PHONY为目标文件,编译时我们就会执行clean

  

 all

当我们需要生成多个文件时,可以用all

执行后会生成多个文件