从Vim编辑到GCC编译:程序员的两大必备工具
从Vim编辑到GCC编译:程序员的两大必备工具
一、Vim:一个让你专注写代码的编辑器
Vim 是 Linux 里最常用的编辑器之一,特点是“多模式”——不同模式干不同的事,熟练后写代码效率超高。
1. 初见Vim:先搞懂怎么“开始写”
第一次打开 Vim 时,你会发现键盘敲啥都没反应——这很正常,因为默认是“命令模式”,不是直接输入文字的模式。
想开始写代码,按 i
键进入“插入模式”(左下角会显示 -- INSERT --
),这时就能正常输入了:
2. Vim的3种核心模式:切换逻辑要记牢
Vim 有5种模式,先掌握最常用的3种,重点是“怎么切换”:
- 命令模式:刚打开 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+dd
删n
行; - 撤销:
u
(按一次撤销一步,能一直撤到打开文件时); - 反撤销:
ctrl+r
(撤销刚才的“撤销”); - 单个字符删除:
x
删光标后一个字符,X
删光标前一个字符; - 大小写转换:
shift+~
(光标在字母上,按一下转大写,再按转小写); - 替换模式:
shift+r
(即R
),进入后输入的字符会直接替换光标后的内容:
进入插入模式的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
切换光标所在屏幕:
5. 视图模式:批量操作神器
按 ctrl+v
进入视图模式,适合批量处理(比如批量注释):
批量加注释:
ctrl+v
进入视图模式;- 按
j
/k
选中要注释的行(选最左边的列);
- 按
shift+i
进入插入模式,输入注释符(比如//
); - 按
ESC
,选中的行都会加上注释。
批量删注释:
ctrl+v
进入视图模式;- 按
j
/k
/h
/l
选中注释符;
- 按
d
删除选中的注释符。
6. 底行模式替换:全局改内容
想批量替换文本?在底行模式用 %s/旧内容/新内容/g
,g
表示全局替换:
比如 %s/hello/hi/g
,就是把全文的 hello
换成 hi
。
7. Vim配置:让编辑器更顺手
每个用户可以自定义Vim配置,而且互不干扰。最简单的配置方法:
- 回到家目录:
cd ~
; - 创建配置文件:
touch .vimrc
(这是隐藏文件); - 用Vim打开:
vim .vimrc
; - 加入常用配置,比如:
set nu " 显示行号 set tabstop=4 " tab键占4个空格 set autoindent " 自动缩进
- 保存退出后,配置自动生效。
进阶配置可以网上搜现成的,下载后放到 ~/.vim
目录即可:
想查看Vim所有模式?输入 vim-modes
命令:
二、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
-
汇编(.o文件):把汇编语言转换成二进制目标文件,用
-c
选项:gcc -c code.s -o code.o # 生成目标文件code.o
-
链接:把目标文件(.o)和系统库文件结合,生成可执行程序(默认叫
a.out
):gcc code.o -o myprog # 生成可执行程序myprog
通常不用分步操作,直接一步编译: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 # 编译免费版
这样开发者只用维护一份代码,就能编译出不同版本,超方便:
三、小知识:为什么需要编译和汇编?
早期程序员是用“纸袋打孔”写程序的(孔代表1,没孔代表0,纯二进制),效率极低。后来人们发明了汇编语言(用 mov
、add
等助记符代替二进制),再后来有了C、Java等高级语言。
从高级语言到二进制,必须经过“编译”和“汇编”:高级语言→汇编语言(编译)→二进制(汇编)。这个过程本质是“把人能看懂的语言,翻译成电脑能看懂的语言”。
就像先有了能翻译二进制的编译器,才有了汇编语言;有了汇编编译器,才有了更高级的语言——一步步降低编程门槛:
最后:几个实用小图
-
.iso
是镜像文件后缀,常用来装系统:
-
给Linux用户添加sudo权限(信任用户)的操作:
- 点赞
- 收藏
- 关注作者
评论(0)