学习 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.i 和 hello.s,这是为了严格展示四个阶段的中间产物。

实际上,gcc -S 和 gcc -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编程工具,助力开发者即刻编程。

更多推荐