首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Vim 简单配置 与 GCC/G++ 初步入门:新手也能轻松上手

Vim 简单配置 与 GCC/G++ 初步入门:新手也能轻松上手

作者头像
用户11915063
发布2025-11-20 13:22:12
发布2025-11-20 13:22:12
330
举报

回顾:

上篇博客,我们系统给讲解了编辑器vim的常见操作与使用,实现了键盘代替鼠标的高效性,那么今天这篇博客,讲给大家分享vim的简单配置与初步了解gcc/g++编译器的认识

前言:

对于 Linux/macOS 下的开发者,Vim 编辑器和 GCC/G++ 编译器是 “入门必备工具”——Vim 不用鼠标就能高效改代码,GCC/G++ 则能把写好的 C/C++ 代码变成可运行的程序。今天就带大家走通 “配置 Vim→用 GCC/G++ 编译” 的全流程,零基础也能学会!


一、Vim 常用模式拓展 —— 替换模式与视图模式

除了之前提到的 “插入模式”(写代码)和 “命令模式”(执行操作),Vim 还有两个超实用的模式,新手学会能少按很多键:​

(1)替换模式:直接覆盖已有内容​

当需要修改已写好的代码(比如把 “int” 改成 “float”),不用先删除再输入,用替换模式更高效:

进入方式:在 “命令模式” 下按 R(大写 R,持续替换)或 r(小写 r,单次替换);​

  • 按 R:光标会变成 “替换态”,输入的新字符会直接覆盖光标位置的旧字符,直到按 Esc 退出;​
  • 按 r:只替换当前光标所在的 1 个字符,替换后自动回到命令模式(适合改单个字母 / 数字),常数 + r 将对常数个字符进行替换

例子:把代码里的 printf("hello") 改成 printf("hi")​

  1. 光标移到 “h”(hello 的第一个字母);​
  2. R 进入替换模式;​
  3. 输入 “hi”,此时 “he” 会被 “hi” 覆盖,变成 printf("hi llo");​
  4. Esc 退出替换模式,再按 x 删除多余的 “llo” 即可。​
实践:

vim code.c进入vim编辑器

如图:将u替换为o

按r + o

常数 + r :对常数个字符进行替换

对一些字符进行覆盖: 进入替换模式

直接输入字符进行替换

(2)视图模式:选中多字符 / 多行操作

写代码时经常需要 “复制某几行”“删除某段代码”,用视图模式选内容比逐行操作快太多!​

例如:批量化注释与去注释

批量化注释:

  1. 进入视图模式:ctrl+v(命令模式进入视图模式)
  2. h j k l 进行区域化选择
  3. shift + i(相当于按 I):进入插入模式
  4. //:进行注释
  5. Esc

批量化去注释:

  1. ctrl + v:进入视图模式
  2. h j k l 进行区域化选择
  3. d即可去注释

按照上述5个步骤,即可完成批量化注释与去注释

实践:

ctrl + v:进入视图模式

h j k l区域化选择

shift + v:进入插入模式

//:进行注释

按Esc

此时就完成了批量化注释

去注释:

ctrl + v:进入视图模式,h j k l 区域化选择

按d:

即可完成去注释操作

其实批量化注释与去注释的背后相当于对具有相同特征的代码进行区域化编辑


二、底行模式的保存退出与分屏对比

首先大家还记得如何进入底行模式嘛?

shift + ;(相当于“:”冒号)进入底行模式

保存退出:
  • w:保存
  • q:退出
  • !:强制
  • w!:强制保存,q!:强制退出,wq!:强制保存退出
  • shift + zz(相当于ZZ):保存退出(不推荐,因为容易误把shift按成ctrl,ctrl + c终止进程,容易把vim卡死)

!command:bash中执行的命令,都可以在底行直接执行

分屏对比:

当我们写代码时,往往不止一个.c文件,通常还会有头文件等,当我们需要在头文件中声明时,需要反复使用vim进行文件切换,十分麻烦,那么有没有一种方法可以将窗口设置为“多窗口”,这样就不需要来回切换文件呢

vs 文件名:分屏对比(支持多分屏)

如图:

如图,我们的光标处于code.h文件中,如何切换光标到code.c中呢?

ctrl + ww:切换光标到另一个文件

补充:

当我们需要查找某个函数或者关键词时,如果我们网上一点一点翻的话,很难找到,这是我们就可以用这个指令——

/ + 关键词:要搜索的关键词,高亮匹配项目,依次查看匹配项

如果由于我们疏忽大意,记错了某个单词,需要我们把所记错的单词全部换为正确的,此时我们可以用/ + 关键词一个一个的进行修改,但是如果有成千上万个但此错误呢?我们就可以用到以下指令——

%S / 被替换内容 / 新内容 /g:将新内容全部替换为被替换内容

2个使用技巧:
光标定位:

当我们退出vim时,光标所在的位置默认就是退出vim时所在的那一行,而当我们使用gcc编译代码时,如果报错时,如图:第13行少了个“;”

vim 文件名 +常数光标定位到常数行

匹配最近命令:

如果我们频繁使用某个指令时,输入可能比较麻烦,此时我们就可以直接使用!+ 指令第一个字符

!+ 指令第一个字符匹配到最近一次以指令第一个字符开头的指令(例如:!v,匹配的就是最近一次以字符v开头的指令)

解决问题:
1、vim异常退出:

由于存在网络断开等原因,我们在写代码时避免不了异常退出,此时你可能会说:完蛋啦!代码还没有保存😭,此时我们不需要担心!!!当我们再次打开vim时就会出现如下场景:

当我们查看文件时 ls -al:查看隐藏文件,就可以看到这个临时文件了

如果我们再次使用vim时,他还会提醒我们以上的界面,那么我们该如何关闭呢?,此时我们只需要删除刚刚那个临时文件即可

2、给用户进行赋权

当我们是普通用户时,是无法进行sudo的,因为普通用户没有添加到“白名单”里

vim /ect/sudousr指令

这里我们可以直接把皮特用户的名字添加到里面即可,此时系统不会让我们添加,我们直接强制添加w!即可

vim很挫啊!原始vim,vim需要经过配置,才能更好的使用

配置原理(Centos7)

一键化配置vim方案:

代码语言:javascript
复制
yhr@VM-24-15-ubuntu:~$ pwd
/home/yhr
yhr@VM-24-15-ubuntu:~$ ls -la
total 32
drwxr-x--- 2 yhr  yhr  4096 Nov 14 19:58 .
drwxr-xr-x 5 root root 4096 Nov  1 19:36 ..
-rw------- 1 yhr  yhr   725 Nov 14 19:59 .bash_history
-rw-r--r-- 1 yhr  yhr   220 Nov  1 19:36 .bash_logout
-rw-r--r-- 1 yhr  yhr  3771 Nov  1 19:36 .bashrc
-rw-rw-r-- 1 yhr  yhr     3 Nov 14 19:58 code.c
-rw-r--r-- 1 yhr  yhr   807 Nov  1 19:36 .profile
-rw------- 1 yhr  yhr  1175 Nov 14 19:58 .viminfo

一般情况下,加目录下都会有 .vimrc的文件,但是由于我们是刚刚创建的用户,所以没有配置vim,此时就不会出现 .vimrc的文件,所以我们就手动创建一个.vimrc的文件

代码语言:javascript
复制
yhr@VM-24-15-ubuntu:~$ touch .vimrc
yhr@VM-24-15-ubuntu:~$ ls -al
total 32
drwxr-x--- 2 yhr  yhr  4096 Nov 14 20:02 .
drwxr-xr-x 5 root root 4096 Nov  1 19:36 ..
-rw------- 1 yhr  yhr   784 Nov 14 20:02 .bash_history
-rw-r--r-- 1 yhr  yhr   220 Nov  1 19:36 .bash_logout
-rw-r--r-- 1 yhr  yhr  3771 Nov  1 19:36 .bashrc
-rw-rw-r-- 1 yhr  yhr     3 Nov 14 19:58 code.c
-rw-r--r-- 1 yhr  yhr   807 Nov  1 19:36 .profile
-rw------- 1 yhr  yhr  1175 Nov 14 19:58 .viminfo
-rw-rw-r-- 1 yhr  yhr     0 Nov 14 20:02 .vimrc

创建成功之后,我们就需要在 .vimrc的文件中配置vim了,首先我们配置一个查看行号的指令:

set nu,然后我们打开code.c文件,此时我们就发现code.c文件也带上了行号,

基本配置原理: 把vim的配置项,写入到当前用户的/home/xx/.vimrc中

思考:

1、普通用户yhr的vim配置好的话,那么我再新建的用户呢?是否具有相同vim配置?

答:vimrc属于单个用户,配置也只配置单个用户——最佳实践

2、vim的配置项都有哪些?

可以借助AI,帮助你形成vim的基本配置命令清单

如何一键化设置好vim呢?

目前我们Centos系统有相关链接:

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

并且一定要在普通用户的路径下进行安装

Ubuntu系统大家可以上网搜一下自己配置哈,当然我们也可以更换为Centos系统,关于更换Centos系统呢,博主尽量再出一篇博客教大家如何更换系统哈!


三、编译器

gcc 是 C 语言编译器,g++ 是 C++ 编译器(本质上 G++ 也能编译 C 代码,相当于将C代码转变为C++代码去进行编译,但习惯上 C 用gcc,C++ 用 g++)

编译的过程本质:将源文件翻译成可执行二进制文件

1、翻译的过程(重点放在编译选项上)

a.预处理

我们先在code.c文件中写入代码

代码语言:javascript
复制
  1 #include<stdio.h>
  2 
  3 #define M 100
  4 int main
  5 {
  6         printf("hello %d\n",M);
  7         //printf("hello %d\n",M);
  8         //printf("hello %d\n",M);
  9         //printf("hello %d\n",M);
 10         //printf("hello %d\n",M);
 11         //printf("hello %d\n",M);
 12         printf("hello %d\n",M);
 13 }
 14 

一次将整个代码编译完,将看不到翻译过程

预处理指令:gcc -E code.c -o code.i:将翻译过程放到code.i的临时文件中

预处理的工作:头文件展开、去注释、宏替换、条件编译

vim code.i

如图:code.c文件中的去注释、头文件展开、宏替换的效果都是由预处理产生的

头文件展开:就是把头文件相关内容拷贝到源文件!!头源合并的过程!(编译器只需要再预处理时需要头文件)

思考:当我们把code.c翻译为code.i文件时,code.i还是头文件吗?

答:是!他只是个非常干净的C语言,里面没有一个注释和宏替换

b.编译

编译C语言变为汇编语言

编译指令 gcc -S code.i -o code.s

c.汇编

汇编:汇编语言变为目标文件(.o/.obj(可重定位二进制目标文件))

汇编指令:gcc -c code.s -o code.o

结束汇编的工作,我们还不能正常运行code.o文件,还需要最后一步——链接

d.链接

需要再链接的时候,把我们的.o和C标准库链接形成可执行!

链接指令: gcc code.o -o code.exe

总结:如果大家记不住的话可以这样记忆:ESc -> iso

2、一般程序的构建过程(.o文件)

gcc -c code.c:直接形成同名.o文件

建议(提高效率):


总结:

往期回顾:Linux 新手必学:yum 软件管理 + vim 编辑器使用与配置全攻略

结语:其实这只是起点 ——Vim 的自动补全、主题美化,GCC/G++ 的多文件编译、代码优化,还有更多进阶用法等着探索。新手不用急,先把今天的模式和命令练熟,下次写代码时就能明显感觉 “变快了”~

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 回顾:
  • 前言:
  • 一、Vim 常用模式拓展 —— 替换模式与视图模式
    • (1)替换模式:直接覆盖已有内容​
    • 实践:
    • (2)视图模式:选中多字符 / 多行操作
    • 实践:
  • 二、底行模式的保存退出与分屏对比
    • 保存退出:
    • 分屏对比:
    • 2个使用技巧:
      • 光标定位:
      • 匹配最近命令:
    • 解决问题:
      • 1、vim异常退出:
      • 2、给用户进行赋权
    • 配置原理(Centos7)
  • 三、编译器
    • a.预处理
    • b.编译
    • c.汇编
    • d.链接
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档