首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Linux系统】带你入门编辑器vim与编译器gcc

【Linux系统】带你入门编辑器vim与编译器gcc

作者头像
落羽的落羽
发布2025-12-18 19:42:10
发布2025-12-18 19:42:10
240
举报

在这里插入图片描述
在这里插入图片描述

各位读者大佬好,我是落羽!一个坚持不断学习进步的学生。 如果您觉得我的文章还不错,欢迎多多互三分享交流,一起学习进步! 也欢迎关注我的blog主页: 落羽的落羽

一、Linux下的编辑器—vim

1. vim的基本概念

之前学习C/C++时我使用的VS2022,是一个IDE集成环境,包含了编辑、调试、编译、运行一系列功能。但在Linux环境下,这一过程的每一步其实是分开独自进行的。其中Linux中最常用的代码编辑器,就是vim。

在这里插入图片描述
在这里插入图片描述

vim有很多种模式,我们最常用的三种是命令模式(command mode)、插入模式(insert mode)、底行模式(last line mode),一会后面还会了解几种模式。vim中不同模式之间的切换,一般是通过特定的快捷键完成的。

  • 命令模式(也叫普通模式):这种模式下,可以控制屏幕光标的移动,字符或字或行的删除,移动或复制某区段,进入到其他模式。
  • 插入模式:在这种模式下,才能够进行文字输入 。
  • 底行模式:在这种模式下,进行文件保存或退出,文件替换,查询字符传,列出行号等操作。

用vim打开一个文件进行编辑,使用指令vim 文件名即可,若该文件不存在则会自动创建。

2. vim的简单配置

用vim打开一个文件,就是这样的很简洁的页面,此时写代码并没有什么语法提醒、自动补全的功能。

在这里插入图片描述
在这里插入图片描述

想要给vim增加更丰富的界面功能等,需要我们自己对vim进行简单配置。

在每个用户是主目录下,都可以建立私有的配置文件,这个文件名字是.vimrc。对vim做基本配置,本质是把配置项写进/home/XXX/.vimrc中。 具体的常用配置项可以自己写入文件中。也可以安装互联网上他人开源的已经配置好的插件,这里给大家推荐一个:https://gitee.com/HGtz2222/VimForCpp 目前只支持CentOS系统,不支持在root账号下安装,只能在普通用户下安装。

在这里插入图片描述
在这里插入图片描述

输入这一串指令 安装好以后,再使用vim打开文件进行编辑,页面功能就更加丰富好用了。

在这里插入图片描述
在这里插入图片描述

3. 命令模式的功能(部分)

命令模式是所有模式之间切换的“中转站”,一开始用vim打开文件时默认处在命令模式,然后可以通过特定命令进入其他模式。在其他模式之间的切换,一般要先回退到命令模式中,再切换到另一种模式。从其他模式进入命令模式,按Esc

  • ZZ(也就是shift+zz,下同):退出vim
  • 移动光标相关:
    • 由于早年的键盘上没有方向键,vim规定用hjkl分别控制光标左、下、上、右移动一格。
    • G:移动到文章的最末端,前可加数字表示进入哪一行
    • gg:移动到文章的最开始
    • $:光标移动到所在行的行尾
    • ^:光标移动到所在行的行首
    • wb):光标移动到下个(上个)单词的开头,前可加数字表示跳过几个单词
  • 删除相关:
    • x:删除光标所在的一个字符,前可加数字表示删除包含自己的后面几个字符
    • X:删除光标所在位置的前面一个字符,前可加数字表示删除不包含自己的前面几个字符
    • dd:删除光标所在行,前可加数字表示删除下面几行
  • 剪切复制粘贴相关:
    • yy: 复制光标所在行,前可加数字表示复制下面几行
    • dd:剪切光标所在行,前可加数字表示剪切下面几行(不搭配粘贴使用就是删除)
    • p:将缓冲区的内容粘贴到光标所在位置,前可带数字表示粘出几份
  • 替换相关:
    • r+ 新字符:替换光标所在处的字符,前可加数字表示批量替换
    • R进入vim的替换模式,此时输入字符就是替换光标处内容,直到按Esc回退到命令模式
    • ~:字母转换大小写,前可加数字表示转换后面几个字符(如果是字母则转换)
  • 撤销上一次操作:
    • u:撤销上一个操作,可以连续执行撤销多次操作(只要没有退出vim,随时可以进行撤销,文件保存后也能)
    • ctrl+r:撤回刚才的撤销操作
  • 批量注释:ctrl+v,进入vim的视图模式,这种模式下可以通过hjkl键选择想要添加注释的文本区域,然后按I,输入//,按Esc,这篇区域就都添加了//。这种方法也可以批量输入其他文本内容。

4. 插入模式

在命令模式下,按i进入插入模式并且光标是当前位置,按a进入插入模式且光标处于下一个位置,按o进入插入模式且光标处于新建一行的行首。 然后,就可以在插入模式下随心所欲写代码了~

5. 底行模式的功能(部分)

在命令模式下,按:进入底行模式。

  • 保存与离开文件:
    • 输入w,表示保存当前文件(保存就是文件的w权限)
    • 输入q,表示退出当前文件
    • 输入wq,表示保存并退出。wq!表示强制保存并退出
  • 列出行号:输入set nu,会在文件中的每一行前面列出行号。输入set nonu,取消显示行号
  • 跳到文件的某一行:输入一个数字,回车,就会跳到文件中的这一行。
  • 查找:按/?)+关键字,查找文本中的关键字,按n继续向后(向前)寻找
  • 替换:%s/dst/src/g,用src的内容替换文件中所有dst的内容
  • 分屏:输入vs+另一个文件名,可以新建分屏,通过ctrl+ww选择当前控制的分屏,每块屏可以独立进行操作。
在这里插入图片描述
在这里插入图片描述

二、编译器gcc

1. 基本使用

gcc和g++是C/C++领域最常用的编译器,gcc只能用来编译C语言,g++可以编译C和C++

源文件形成可执行程序的过程,分为预处理、编译、汇编、链接。 gcc的使用格式是:gcc 选项 要编译的文件 选项 目标文件

gcc 源文件会直接将这个文件形成一个叫a.out的可执行文件。

gcc 源文件 -o 目标文件名可以指定形成的可执行文件名字。

在这里插入图片描述
在这里插入图片描述

2. 运行过程

2.1 预处理

预处理过程主要包括头文件展开、去注释、宏替换、判断条件编译。 使用选项-E,使gcc只进行预处理过程,形成中间文件: gcc -E 源文件 -o 中间文件名

在这里插入图片描述
在这里插入图片描述

此时可以用vim打开这个test.i,可以看到此时头文件已经展开了,有几百行:

在这里插入图片描述
在这里插入图片描述
2.2 编译

编译过程是将C语言翻译为汇编语言,这个阶段gcc要检查代码的语法和规范性 使用选项-S,使gcc只进行完这个阶段就停止,形成中间文件: gcc -S 源文件(或完成预处理后的.i文件) -o 中间文件名

在这里插入图片描述
在这里插入图片描述

此时可以用vim打开这个test.s,可以看到内容是汇编语言了:

在这里插入图片描述
在这里插入图片描述
2.3 汇编

汇编阶段是把汇编语言转换为二进制语言。 使用选项-c,使gcc只进行完这个阶段就停止,形成中间文件: gcc -c 源文件(或.i/.s文件) -o 中间文件名

在这里插入图片描述
在这里插入图片描述

此时可以用vim打开test.o,可以看到内容已经是无法显示的二进制语言了:

在这里插入图片描述
在这里插入图片描述
2.4 链接

在链接阶段,要链接程序文件依赖的其他库文件,比如C语言标准库。这个阶段进行完,就真正形成了可执行文件,所以也没有其他选项: gcc 源文件(或.i/.s/.o文件) -o 可执行文件名 由于gcc就是专门用来编译C语言的,所以我们不用写出C标准库它也会自动链接,如果是链接其他库文件就需要再额外操作了。

在这里插入图片描述
在这里插入图片描述

3. 动态链接和静态链接

在我们的实际项目开发中,不可能将所有代码放在一个源文件中,所以会出现多个源文件,而且它们之间存在多种依赖关系,比如一个源文件中可能用到另一个源文件中定义的函数。每一个.c文件会编译形成一个.o文件,然后在链接阶段将它们链接形成一个可执行程序,这个过程就是静态链接。 但是静态链接有缺点:因为每一个程序都有一份目标文件的副本,如果有多个程序都依赖了同一个文件,显然会造成存储空间浪费。而且每当库函数的代码修改后,都需要重新编译链接形成新的可执行文件,更新困难。

动态链接的出现解决了一些问题,它的基本思路是把程序按照功能模块拆分成各个相对独立的部分,在程序运行时才把它们链接完整。 ldd 可执行文件命令可以查询一个可执行文件的依赖的库

在这里插入图片描述
在这里插入图片描述

这里有一个重要的概念——库,也分为动态库和静态库

  • 静态库,是指编译链接时,把库文件中的所有代码全部写入了可执行文件中,因此生成的可执行文件相当大,但在程序运行时,其实就不需要静态库中了。静态库文件的后缀一般是.a
  • 动态库,是指编译链接时没有把库的代码加入到可执行文件中,而是在程序执行时又运行时链接文件加载库,这样可以节省系统的开销,动态库文件的后缀一般是.so。如上图中的C语言标准库libc.so.6就是动态库,gcc默认使用动态库,gcc默认使用的链接方式就是动态链接。可以通过file 文件名查看一个文件的详细信息:
在这里插入图片描述
在这里插入图片描述

这就表示test可执行文件是动态链接的。

一般我们的云服务器上C/C++的静态库是没有安装的,可以通过指令sudo yum install glibc-static libstdc++-static -y(CentOS中)安装。 gcc中使用-static指令就可以指定使用静态链接。

在这里插入图片描述
在这里插入图片描述

所以,一般情况下都是用动态链接好~

本篇完,感谢阅读

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Linux下的编辑器—vim
    • 1. vim的基本概念
    • 2. vim的简单配置
    • 3. 命令模式的功能(部分)
    • 4. 插入模式
    • 5. 底行模式的功能(部分)
  • 二、编译器gcc
    • 1. 基本使用
    • 2. 运行过程
      • 2.1 预处理
      • 2.2 编译
      • 2.3 汇编
      • 2.4 链接
    • 3. 动态链接和静态链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档