学习 Linux 开发,Vim 编辑器和 GCC 编译器是两个必须掌握的基础工具。本文带你快速上手它们的常用操作。

一、Vim 编辑器

Vim 是一个功能强大的文本编辑器,拥有多种模式,最常用的是命令模式插入模式

1. 进入与退出

vim test.c   # 用 Vim 打开(或创建)test.c 文件

进入后默认处于命令模式。要退出 Vim,在命令模式下输入 :q(退出)、:wq(保存并退出)或 :q!(强制退出,不保存)。

2. 插入模式(编辑文本)

在命令模式下,按以下键进入插入模式:

按键 作用
i 在光标前开始插入
a 在光标后开始插入
o 在下一行新开一行插入

Esc 键返回命令模式。

3. 移动光标(命令模式)

使用键盘上的 h j k l 分别控制左、下、上、右移动。

也可以使用方向键,但习惯 hjkl 可以提高效率。

4. 快速跳转

命令 作用
gg 跳转到文件第一行
G 跳转到文件最后一行
:n 跳转到第 n 行(如 :10

5. 自动格式化代码

gg=G

解释:gg 跳到文件开头,= 自动缩进,G 跳到文件末尾 —— 组合起来就是格式化整个文件。

如果格式化没有效果,可以在 Vim 中执行 :set cindent 或确保 ~/.vimrc 里有 filetype indent on

6. 删除文本

命令 作用
x 删除光标所在字符
dd 删除光标所在整行
dw 删除从光标到单词末尾

7. 复制与粘贴

命令 作用
yy 复制光标所在行
p 在光标后粘贴内容

p 粘贴整行时会在当前行下方新开一行;粘贴字符时则在光标后。

8. 查找

在命令模式下输入 / 加上要查找的关键词,例如:

/printf

n 跳转到下一个匹配项,N 跳转到上一个。


二、GCC 编译器

GCC(GNU Compiler Collection)是最常用的 C/C++ 编译器。下面用一个简单的 hello.c 示例程序来演示编译过程。

#include <stdio.h>
int main() {
    printf("Hello, world!\n");
    return 0;
}

1. 编译的四个阶段

GCC 将源代码变成可执行文件需要经过:预处理 → 编译 → 汇编 → 链接。我们可以分步查看中间结果。

命令 作用 生成的文件
gcc -E hello.c -o hello.i 预处理(展开头文件、宏等) hello.i
gcc -S hello.i -o hello.s 编译成汇编代码 hello.s
gcc -c hello.s -o hello.o 汇编成目标文件(机器码) hello.o
gcc hello.o -o hello 链接生成可执行文件 hello

打开 hello.i 可以看到,#include <stdio.h> 已被展开;

hello.s 里是汇编语言;hello.o 是二进制目标文件。

💡 补充说明
上表中,第 2 步(编译成汇编)和第 3 步(汇编成目标文件)的输入文件分别写成了 hello.ihello.s,这是为了严格展示四个阶段的中间产物

实际上,gcc -Sgcc -c 也可以直接接收 .c 源文件作为输入,例如:

  • gcc -S hello.c -o hello.s(一步完成预处理+编译,生成汇编文件)
  • gcc -c hello.c -o hello.o(一步完成预处理+编译+汇编,生成目标文件)

两种写法最终得到的 .s.o 文件内容是完全相同的。区别在于:

  • 链式写法(如表中所示)会保留 .i.s 等中间文件,适合学习编译原理。

  • 直接写法(用 .c)不会生成 .i,但更快捷,适合日常开发。

2. 一步完成编译

gcc hello.c -o hello

这条命令一次性完成预处理、编译、汇编和链接,直接生成可执行文件 hello

3. 运行程序

./hello

注意 ./ 和文件名之间没有空格,表示运行当前目录下的 hello 程序。

4. 常用选项汇总

选项 含义
-E 只进行预处理
-S 生成汇编文件(.s
-c 生成目标文件(.o),不链接
-o 指定输出文件名
-g 生成调试信息(供 GDB 使用)
-Wall 显示所有警告信息

三、小结

本文介绍了 Vim 的基本编辑命令和 GCC 的编译流程。掌握这些基础操作后,你就可以在 Linux 环境下编写、编译和运行 C 程序了。

练习建议

  • 用 Vim 写一个简单的 hello.c
  • 尝试分步执行 gcc -E-S-c 并观察生成的文件
  • ./ 运行最终的可执行文件
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐