从Vim编辑到GCC编译:程序员的两大必备工具

举报
yd_290604680 发表于 2025/08/28 16:58:34 2025/08/28
【摘要】 从Vim编辑到GCC编译:程序员的两大必备工具 一、Vim:一个让你专注写代码的编辑器Vim 是 Linux 里最常用的编辑器之一,特点是“多模式”——不同模式干不同的事,熟练后写代码效率超高。 1. 初见Vim:先搞懂怎么“开始写”第一次打开 Vim 时,你会发现键盘敲啥都没反应——这很正常,因为默认是“命令模式”,不是直接输入文字的模式。想开始写代码,按 i 键进入“插入模式”(左下角...

从Vim编辑到GCC编译:程序员的两大必备工具

一、Vim:一个让你专注写代码的编辑器

Vim 是 Linux 里最常用的编辑器之一,特点是“多模式”——不同模式干不同的事,熟练后写代码效率超高。

1. 初见Vim:先搞懂怎么“开始写”

第一次打开 Vim 时,你会发现键盘敲啥都没反应——这很正常,因为默认是“命令模式”,不是直接输入文字的模式。

想开始写代码,按 i 键进入“插入模式”(左下角会显示 -- INSERT --),这时就能正常输入了:
image.png

2. Vim的3种核心模式:切换逻辑要记牢

Vim 有5种模式,先掌握最常用的3种,重点是“怎么切换”:
image.png

  • 命令模式:刚打开 Vim 就是这模式,输入的内容会被当成命令(比如复制、删除);
  • 插入模式:按 i(或 a/o,稍后讲)进入,能直接写代码;
  • 底行模式:在命令模式按 shift+;(即 :)进入,用于保存、退出、搜索等操作。

切换规则:插入模式和底行模式不能直接切换,必须先按 ESC 回到命令模式,再切换到另一种模式。

3. 命令模式:高效编辑的核心

命令模式里的“快捷键”其实都是命令,记住这些常用的,写代码能快一倍:

光标定位(不用鼠标也能飞):

  • 跳转到第 n 行:输入 n 再按 gg(比如 5gg 就是第5行);
  • 跳转到最后一行:shift+g(或 G);
  • 行内跳转:shift+$ 到行尾,shift+^ 到行首;
  • 按单词移动:w 跳到下一个单词开头,b 退回上一个单词开头;
  • 方向键替代:h(左)、j(下)、k(上)、l(右)(老版本Vim没有方向键时用,现在也能用)。

编辑操作(复制、删除、撤销):

  • 复制:yy 复制当前行,n+yy 复制从当前行开始的 n 行(比如 3yy 复制3行);
  • 粘贴:p 粘贴到当前行下方,n+p 粘贴 n 次;
  • 删除/剪切:dd 删当前行(也能当剪切用),n+ddn 行;
  • 撤销:u(按一次撤销一步,能一直撤到打开文件时);
  • 反撤销:ctrl+r(撤销刚才的“撤销”);
  • 单个字符删除:x 删光标后一个字符,X 删光标前一个字符;
  • 大小写转换:shift+~(光标在字母上,按一下转大写,再按转小写);
  • 替换模式:shift+r(即 R),进入后输入的字符会直接替换光标后的内容:
    image.png

进入插入模式的3种方式:

  • i:在光标前插入;
  • a:在光标后插入;
  • o:在当前行下方新增一行并插入(超好用!)。

4. 底行模式:保存、退出、搜索全靠它

在命令模式按 : 进入底行模式,输入这些命令超实用:

  • 保存退出:wq(保存+退出),或直接按 shift+zz(快速保存退出);
  • 强制操作:加 ! 表示强制,比如 q!(不保存强制退出)、w!(强制保存);
  • 显示/隐藏行号:set nu(显示)、set nonu(隐藏);
  • 搜索内容:/XXX(搜索XXX),按 n 跳转到下一个结果;
  • 直接运行命令:!+命令,比如 !gcc code.c(编译代码)、!./a.out(运行程序);
  • 分屏操作:vs 文件名(垂直分屏,同时打开多个文件),按 ctrl+ww 切换光标所在屏幕:
    image.png

5. 视图模式:批量操作神器

ctrl+v 进入视图模式,适合批量处理(比如批量注释):

批量加注释:

  1. ctrl+v 进入视图模式;
  2. j/k 选中要注释的行(选最左边的列);
    image.png
  3. shift+i 进入插入模式,输入注释符(比如 //);
  4. ESC,选中的行都会加上注释。

批量删注释:

  1. ctrl+v 进入视图模式;
  2. j/k/h/l 选中注释符;
    image.png
  3. d 删除选中的注释符。

6. 底行模式替换:全局改内容

想批量替换文本?在底行模式用 %s/旧内容/新内容/gg 表示全局替换:
image.png

比如 %s/hello/hi/g,就是把全文的 hello 换成 hi

7. Vim配置:让编辑器更顺手

每个用户可以自定义Vim配置,而且互不干扰。最简单的配置方法:

  1. 回到家目录:cd ~
  2. 创建配置文件:touch .vimrc(这是隐藏文件);
  3. 用Vim打开:vim .vimrc
  4. 加入常用配置,比如:
    set nu          " 显示行号
    set tabstop=4   " tab键占4个空格
    set autoindent  " 自动缩进
    
  5. 保存退出后,配置自动生效。

进阶配置可以网上搜现成的,下载后放到 ~/.vim 目录即可:
image.png

想查看Vim所有模式?输入 vim-modes 命令:
image.png

二、GCC编译:把代码变成可执行程序

写好的代码(比如C语言)不能直接运行,需要用编译器(GCC)转换成电脑能懂的二进制文件。GCC编译分4步,每步都能单独操作。

1. 编译四步走:从源码到程序

code.c 为例,一步步看:

  • 预处理(.i文件):展开头文件(比如把 #include <stdio.h> 的内容拷贝进来),用 -E 选项:

    gcc -E code.c -o code.i  # 生成预处理文件code.i
    
  • 编译(.s文件):把预处理后的代码转换成汇编语言,用 -S 选项:

    gcc -S code.i -o code.s  # 生成汇编文件code.s
    

    image.png

  • 汇编(.o文件):把汇编语言转换成二进制目标文件,用 -c 选项:

    gcc -c code.s -o code.o  # 生成目标文件code.o
    
  • 链接:把目标文件(.o)和系统库文件结合,生成可执行程序(默认叫 a.out):

    gcc code.o -o myprog  # 生成可执行程序myprog
    

    image.png

通常不用分步操作,直接一步编译:gcc code.c -o myprog,然后运行 ./myprog 即可。

2. 条件编译:一个代码库,编译出多个版本

你有没有想过:同一款软件(比如IDE)的免费版、专业版,功能不同,开发者是怎么维护的?答案是“条件编译”。

通过 #ifdef 等指令,可以让编译器只编译某部分代码。比如:

#ifdef PRO_VERSION  // 如果定义了PRO_VERSION
  void advanced_func() { ... }  // 编译专业版功能
#else
  void basic_func() { ... }     // 编译免费版功能
#endif

编译时加 -D 选项定义宏,就能切换版本:

gcc code.c -o pro_version -DPRO_VERSION  # 编译专业版
gcc code.c -o free_version              # 编译免费版

这样开发者只用维护一份代码,就能编译出不同版本,超方便:
image.png

三、小知识:为什么需要编译和汇编?

早期程序员是用“纸袋打孔”写程序的(孔代表1,没孔代表0,纯二进制),效率极低。后来人们发明了汇编语言(用 movadd 等助记符代替二进制),再后来有了C、Java等高级语言。

从高级语言到二进制,必须经过“编译”和“汇编”:高级语言→汇编语言(编译)→二进制(汇编)。这个过程本质是“把人能看懂的语言,翻译成电脑能看懂的语言”。

就像先有了能翻译二进制的编译器,才有了汇编语言;有了汇编编译器,才有了更高级的语言——一步步降低编程门槛:
image.png

最后:几个实用小图

  • .iso 是镜像文件后缀,常用来装系统:
    image.png

  • 给Linux用户添加sudo权限(信任用户)的操作:
    image.png
    image.png
    image.png

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。