您当前所在位置:首页安装教程Linux系列_3:编辑器vim与编辑器gcc—g++的使用

Linux系列_3:编辑器vim与编辑器gcc—g++的使用

更新:2023-08-09 11:36:06编辑:tooool归类:安装教程人气:87

前言

如需获取工程文件,xshell,虚拟机和镜像等,请关注公众号【0与1】,并在后台回复【Linux】

Linux系列_3:编辑器vim与编辑器gcc—g++的使用

之前编写C语言程序,经常会使用到VS,VS是属于IDE的代表,也就是集成开发环境,它将上述很多功能集成于一体,让开发者只去关心代码的编写操作,而无需过多顾及其他方面,让使用者感到很方便。

正如为什么不常用Python去实现数据结构呢,因为Python封装得太厉害了,不便于我们更深层次地去掌握这些细节。所以,的确IDE很方便,但是这种方便,却不利于我们深入理解计算机,理解程序的编译等等。比如大家都知道main函数有两个参数,但是为什么有两个参数,很多人却答不上来。但是这些问题在却能Linux编程中会得到一一解答。

在Linux中编写C语言或其他语言,可以去安装类似于VS这种集成开发环境,但是我们刻意让这些功能独立。编写代码使用vim编辑器,编译代码使用gcc/g++编译器,调试代码时使用gdb调试器等等

一:Linux软件包管理器yum及准备工作

(1)什么是软件包

A:软件包

  • 区别Windows,在Linux下安装软件,第一种方法是下载程序源代码,然后进行编译,就得到了程序;第二种方法是rpm包安装。但是这两种方法都不推荐使用
  • 我们推荐使用yum(Yellow dog updater,Modified)安装。 为了解决这样的麻烦,一些人将软件提前编译好并做成软件包(类似于Windows上的安装程序.exe)放置于服务器上,通过包管理器(yum正是一种包管理器)获取到软件包直接进行安装。软件包和包管理器类似于App和App store的关系yum具有查找,下载,安装和卸载的功能

B:注意事项

  • 软件包名称为:主版本号-次版本号-源程序发行号-软件包发行号-主机平台-CPU架构

C:yum基本使用

  • sudo yum install -y [软件名]//yum安装软件基本语法(-y表示无需确认)
  • sudo yum remove[软件名]//yum卸载软件
  • sudo yum list//列出软件

(2)安装rzsz

作用:该工具可以用于Windows机器和远端Linux及其通过xshell传输文件安装

使用

二:Linux开发工具-Vim编辑器

(1)创建文件

在安装好vim之后,终端中输入vim即可打开vim编辑器

直接使用vim [文件名],即可创建文件,并进行编写。但建议不要这样做,在编写代码写时先创建好目录,文件,然后在打开已经存在的文件进行编写

(2)三种基本模式

vim是一款多模式的编辑器,共有12种模式,其中主要用到的有以下三种模式

  • 命令模式:刚进入后,会发现输入任何字符都不会进行回显,这是因为此时处在命令模式下
  • 插入模式:只有在插入模式下,才可以进行文字输入,按下i进行入插入模式,按下ESC则返回命令模式
  • 末行模式:末行模式可以进行文件的保存,退出等等操作。命令模式下输入即可进入该模式

1:进入插入模式的三种方式使用vim打开文件后,可以三种方式进入插入模式,略有区别

方式

描述

i

光标原位,不会移动

a

光标向后移动

o

光标移至下一行

2:如何返回命令模式按下ESC即可返回命令模式3:如何进入末行模式切换为命令模式后,输入,即可进入末行模式。在末行模式中可以进行保存,退出等操作。需要保存时输入w!,需要退出时输入q!,保存并退出则输入wq!。如下:

(3)vim命令模式指令集

注意以下命令,必须在命令模式下操作

A:复制与粘贴

1:复制粘贴单行

  • 按下yy光标所在行复制到缓冲区
  • 按下p将缓冲区字符粘贴至光标所在行的下一行

2:复制粘贴多行

  • 输入nyy,复制n行
  • 输入np,粘贴n行

B:删除

1:删除某行

  • 输入dd表示删除光标所在行

2:剪切

  • 输入dd删除后,然后再在某行输入p,可以实现剪切功能

3:删除多行

  • 输入ndd,可以删除n行(同样可以进行多行剪切)

4:删除字符

  • 输入x,删除光标所在的字符,输入一次删除一个
  • 输入nx,删除光标所在位置及以后的n个字符
  • 输入X,删除光标所在位置的前一个字符
  • 输入3X,删除光标所在位置及以前的n个字符

C:光标移动和定位

1:光标的上下定位

  • 输入gg即可将光标定位至开始
  • 输入G即可将光标定位至末尾
  • 输入nG,即可将光标定位至第n行

2:光标的左右定位

  • 输入$,将光标定位至所在行行尾
  • 输入^,将光标定位至所在行行首
  • 输入w,将光标定位至所在行下个单词的首字母
  • 输入b,将光标定位至所在行上个单词的首字母

3:hjkl

  • 输入h,将光标向前移动到上一个字符
  • 输入j,将光标向下移动到下一行
  • 输入k,将光标向上移动到上一行
  • 输入l,将光标向后移动到下一个字符

4:打开时定位

  • 输入vim test.c +n,表示打开文件后定位到test.c的第n行,该操作经常用于定位错误日志所在行

D:撤销

  • 输入u表示撤销上次操作
  • 输入ctrl+r表示重组

(4)vim末行模式命令集

注意以下命令全部要在末行模式下进行

A:查找

  • 输入/[查询关键字],可以查找所有匹配的关键字,然后高亮显示,按住n可以向下在关键字中切换

B:设置行号

  • 输入set nu调出行号

C:跨文件操作

1:分屏

  • 输入vs[文件名](没有将自动创建,即可分屏)

2:切换窗口

  • 命令模式下,输入ctrl+w+w(连按两下w),即可在打开的窗口中来回切换

(5)补充

1:大小写转换

  • 输入shift+~即可将光标所在的字母在大小和小写间来回切换

2:打开上次编辑的文件

  • 在终端输入!vim可以打开上次编辑的文件

3:快速退出

  • 快速输入两次大写Z,也即ZZ,即可快速保存并退出

(6)vim配置

如果不对vim进行一定的配置,那么纯纯的vim使用起来一定是很不爽的,因为作为一款编辑器,没有代码不全,语法高亮等基本功能是万万不可以的

一键配置,复制即可注意配置文件在普通用户目录下,也就是每个人的vim是不一样的,每个人配置的是自己的vim。

curl-sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

三:Linux编译器-gcc/g++

(1)gcc/g++完成编译的过程

A:预处理

  • 预处理主要包括宏定义,文件包含,条件编译,去注释
  • 输入gcc -E hello.c -o hello.i,其中选项E作用是让gcc在预处理后停止编译

B:编译

  • 此阶段,gcc检查代码的规范性,是否具有语法错误
  • 输入gcc -S hello.i -o hello.s,即可将预处理的结果继续编译

C:汇编

  • 编译阶段无误后,进入汇编,将.s文件转化为.o二进制文件
  • 输入gcc -c hello.s -o hello.o,即可将编译停止在此阶段

(打开二进制文件使用od命令)

D:链接

  • 此阶段,将目标文件与系统库进行链接生成可执行文件。
  • 输入gcc hello.o -o hello,则完成编译

(3)gcc/g++选项

选项

描述

-E

进行预处理,不进行编译,汇编和链接

=S

进行编译,不进行汇编和链接

-c

进行汇编,不进行链接

-o

链接

static

采用静态链接

-g

生成调试信息

-shared

使用动态库

-O0

无优化

-O1

默认优化级别

-O3

优化最高

-w

不生成警告信息

-Wall

生成所有警告信息

(2)重要概念:函数库

A:gcc/g++在哪实现了函数

在学C语言时,我们知道想要向屏幕正常打印字符,则必须在头部引入inlcude 这样的头文件,因为printf函数的是在其中实现的在刚才的例子中,查看hello.i,也就是预编译生成的文件,可以发现include ,在如下路径中

进入该路径,可以发现这里存放的便是头文件

可是gcc为什么知道头文件会在这个路径下的呢?实际上,在没有特别指定时,gcc会默认搜索路径/usr/lib,并进行查找。这也就是引用头文件时两种方式的区别所在:include 会在设定目录下寻找,而include "Myhead.h",会在当前目录下寻找。

B:静态库与动态库

  • 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名为.a。输入gcc hello.c -o helloc -static,,采用静态链接
  • 动态库在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序运行时由运行时链接文件加载库,这样做可以节省系统开销。动态库后缀名一般为.sogcc在编译时默认使用动态库,完成链接之后,就生成了可执行文件。

所以动态链接形成的程序体积较小,比较节省资源,但是一旦库丢失,程序就不可以运行了;而静态形成的程序的体积很大,但具有独立性,即便库丢失,也不影响程序运行。

我告诉你msdn版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

Windows10系统玩辐射4跳出无反应如何解决 安利:除了Windows,又一电脑系统可选择了!体积小+运行飞速

游客 回复需填写必要信息