Linux —— 基础开发工具2

2. 编辑器 Vim

2.1 Linux编辑器 - vim使用

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,他不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在的终端运行,也可以运行于 x window、mac os、Windows,本章文章统一按照vim来进行讲解。

2.2 vim的基本概念

vim其实有很多的模式,但是只需要掌握3种就可以了,分别是命令模式、插入模式、底行模式,各模式的功能区分如下:

正常/普通/命令模式:

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式

插入模式:

只有在插入模式下,才可以做文字的输入,按【ESC】键可回到命令模式。该模式是我们后面用的最频繁的编辑模式。

末行模式(底行模式):

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

在命令模式下," shift+; "即可进入该模式。要查看你的所有模式:打开 vim,底行模式直接输入:help vim-modes

2.3 vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

vim test.c

不过要注意的是,进入从vim之后,是处于【正常模式】,你要切换到【插入模式】才能够输入文字。
【命令模式】切换至【插入模式】

输入a

输入i

输入o

【插入模式】切换至【命令模式】

目前处于【插入模式】,就只能一直输入文字,如果输错了字,想用光标键往回移动,将盖子删除,可以先按一下【ESC】键跳到【命令模式】再删除文字。当然,也可以直接删除。

【命令模式】切换至【底行模式】

【shift+;】,其实就是输入【:】

退出vim及保存文件,在【命令模式】下,按一下【:】冒号键进入【底行模式】,例如:

:w(保存当前文件)

:q(输入【wq】,存盘并退出vim)

:q!(输入q!,不存盘强制退出vim)

vim filename + n:光标定位到第n行

2.4 命令模式:

u:撤销操作;ctrl+r:反撤销操作。

删除文字的总结:

【x】:每按一次,删除光标所在位置的一个字符

【nx】:表示删除光标所在位置的"后面(包含自己在内)"n个字符

【X】:大写的X,每按一次,删除光标所在位置的"前面"一个字符

【nX】:表示删除光标所在位置的"前面"n个字符

【dd】:删除光标所在行

【ndd】:从光标所在行开始删除n行

2.5 插入模式:

底行模式:

2.6 底行模式:

vim操作总结图:

3. 编译器gcc/g++

3.1 背景知识

  1. 预处理(进行宏替换/去注释/条件编译/头文件展开等)

  2. 编译(生成汇编)

  3. 汇编(将汇编代码生成机器可识别的代码)

  4. 链接(生成可执行文件或库文件)

3.2 gcc编译选项

格式:

gcc 【选项】 要编译的文件 【选项】 【目标文件】

3.2.1 预处理

gcc --E hello.c --o hello.i

3.2.2 编译(生成汇编)

gcc --S hello.i --o hello.s

3.2.3 汇编(生成机器可识别代码)

gcc --c hello.s --o hello.o

3.2.4 链接

gcc hello.o --o hello

3.2.5 动态链接和静态链接

4. 自动化构建-make/makefile

4.1 背景

makefile带来的好处就是------"自动化编译",一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,可见,makefile都成为了一种在工程方面的编译方法。

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

4.2 使用

相关推荐
黄焖鸡能干四碗1 小时前
软件试运行方案试运行报告文档下载(WORD)
大数据·运维·数据库·安全
p***23361 小时前
Nginx 的 proxy_pass 使用简介
运维·nginx
秋深枫叶红1 小时前
嵌入式第二十三篇——数据结构基本概念
linux·数据结构·学习·算法
土拨鼠烧电路1 小时前
RPA悖论迷思:从解放的利器到运维的枷锁?
大数据·运维·笔记·rpa
proware1 小时前
linux串口驱动之五一级接收缓存同步
linux·工作队列·smp_load
宇钶宇夕1 小时前
西门子 S7-1200 PLC 3 台收尘器交替控制系统:硬件选型 + IO 地址分配 + 实操指南(下)
运维·自动化
Bruce_Liuxiaowei1 小时前
Linux 内存获取方法详解
linux·运维·网络安全
源梦想1 小时前
英雄无敌动作冒险网页小游戏Linux部署演示
linux·运维·服务器
XH-hui1 小时前
【打靶日记】群内靶机 Creds
linux·网络安全