Vim命令行参数与Makefile

发布时间:2024年01月21日

如果你刚学习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

?删除当前行

yyyy?-- 复制当前行。
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

执行后会生成多个文件

?

文章来源:https://blog.csdn.net/weixin_73885716/article/details/135727460
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。