目录
- [1. Vim 的模式](#1. Vim 的模式)
- [2. 命令模式](#2. 命令模式)
- [2.1. 光标移动](#2.1. 光标移动)
- [2.2. 删除、复制与粘贴](#2.2. 删除、复制与粘贴)
- [2.3. 替换、更改与撤销](#2.3. 替换、更改与撤销)
- [2.4. 批量注释](#2.4. 批量注释)
- [3. 底行模式:全局掌控](#3. 底行模式:全局掌控)
- [3.1. 保存与退出](#3.1. 保存与退出)
- [3.2. 查找与替换](#3.2. 查找与替换)
- [3.3. 界面与跳转设置](#3.3. 界面与跳转设置)
- 分屏操作(多文件代码对照)
- [4. Vim 配置](#4. Vim 配置)
- [4.1. 配置文件](#4.1. 配置文件)
- [4.2. 操作逻辑](#4.2. 操作逻辑)
在 Linux 开发工具链中,我们常常会产生一个误区:认为 IDE(集成开发环境)就是一切。但**"Linux 下的开发工具是独立的!"** IDE 很多时候仅仅是我们用来写代码的壳,而真正的编译(gcc/g++)、调试(gdb/cgdb)、构建(makefile/cmake)都是独立的工具。
而 Vim,作为 Linux 下最原生的文本编辑器,正是连接这一切的枢纽。很多人对 Vim 望而生畏,觉得它的操作反人类。但今天,我们将结合操作,彻底扒开 Vim 的底层逻辑,带你领略"键盘即鼠标"的极致效率。

1.Vim的模式
Vim 的三大核心模式:
-
普通/命令模式 (Normal Mode) :Vim 的默认模式 ,也是核心枢纽。此时键盘上的字母不是用来打字的,而是快捷键。用于控制屏幕光标移动、字符/行的删除、复制粘贴等。
-
插入模式 (Insert Mode):只有在这个模式下,你才可以进行正常的文字输入。这是编辑文本最频繁的模式。
-
底行模式 (Last Line Mode):用于文件的保存、退出、字符串查找替换、列出行号等全局操作。

2. 命令模式
进入 Vim 后,你首先处于命令模式。以下操作全部在命令模式下执行,无需进入底行模式。


2.1. 光标移动
在早期的键盘设计中,并没有独立的方向键,或者方向键离主键盘区太远。Vim 提倡使用 hjkl

-
基础移动(上下左右):
h(左) |j(下) |k(上) |l(右)
-
单词级跳跃(非常高效):
-
w(word):跳到下一个单词的开头。 -
e(end):跳到当前或下一个单词的字尾。 -
b(back):回到上一个单词的开头。
-
-
行内极速定位(锚点):
-
0或Shift + 6(即^):跳到当前行的行首。 -
Shift + 4(即$):跳到当前行的行尾 。
-
-
全局飞跃:
-
gg:瞬间回到文本第一行。 -
Shift + g(即G):瞬间跳到文本最后一行。 -
n + G:跳到第 n 行(例如15G直接跳到第 15 行)。
-

-
Ctrl + g:在屏幕底部列出当前光标所在的行号。 -
翻页操作:
Ctrl + b(屏幕往后移动一页) |Ctrl + f(屏幕往前移动一页) |Ctrl + u(往后移动半页) |Ctrl + d(往前移动半页)。
2.2. 删除、复制与粘贴
Vim 的精髓在于批量化操作 。在命令前加上数字 n,即可重复执行 n 次。
-
删除 (Delete):
-
x:删除光标所在位置的一个字符(向后删)。 -
n + x:例如6x,删除光标所在位置及其后面的 6 个字符。
-

-
Shift + x(即X):删除光标所在位置的前面一个字符。 -
n + X:例如20X,向前删除 20 个字符。 -
dd:删除(剪切)光标所在的一整行。 -
n + dd:例如5dd,从当前行开始向下删除 5 行。 -
复制 (Yank):
yw:将光标所在处到字尾的字符复制到缓冲区中。

n + yw:复制 n 个单词。

-
yy:复制光标所在的一整行。 -
n + yy:例如6yy,复制从当前行向下数的 6 行。 -
粘贴 (Paste):
p:将缓冲区内的字符粘贴到光标所在位置。注意:所有与y有关的复制命令,都必须与p配合才能完成复制与粘贴功能。

2.3. 替换、更改与撤销
-
替换 (Replace):
-
r:替换光标所在处的一个字符,替换后停留在命令模式(适合改错别字)。 -

-
Shift + r(即R):进入替换模式 ,此时输入会连续覆盖后面的字符,直到按下Esc。同时shift + ~可实现大小写快速转化。 -

-

-
-
更改 (Change):
-
cw:更改光标所在处的字到字尾处(删除该词并直接进入插入模式,非常常用!)。 -
n + cw:例如c3w,更改 3 个单词。
-
-
撤销与重做:
-
u:撤销上一次操作(可连续按u多次回退)。 -
Ctrl + r:对u的撤销进行"反撤销"(恢复操作,即重做)。
-
2.4 批量注释
-
在命令模式下,按
Ctrl + v进入视图模式 (VISUAL BLOCK)。 -
使用
h或j上下移动,选中多行的行首。 -
按下
Shift + i(即I),进入插入模式。 -
输入注释符(如
//或#)。 -
按
Esc键(稍微停顿一下),刚才选中的所有行都会自动加上注释!


- 批量取消注释 :同样
Ctrl + v选中多行注释符,直接按d即可删除。
3. 底行模式:全局掌控
在命令模式下,按下 Shift + ;(即 :),光标会跳到底部,进入底行模式。

3.1 保存与退出
-
:w:保存当前文件。 -
:q:退出(如果文件未修改)。 -
:wq:保存并退出(最常用的组合)。 -
:q!:强制退出,不保存 (当你改乱了代码想放弃时使用,按q!不存盘强制退出 vim)。 -
:w!:强制保存(当你打开了一个只读文件,但你有写权限时使用)。
3.2. 查找与替换
-
查找:
-
:/keyword:按/键,输入你要找的字符,回车。按n向下继续查找,按Shift + n向上查找。 -
:?keyword:按?键,向上查找。
-
-

-
替换:
:%s/dst/src/g:将文件中所有的dst替换为src。(%代表全文件,g代表全局替换)。
3.3. 界面与跳转设置
-
:set nu:显示行号(number)。 -
:set nonu:取消显示行号。 -
:n:直接输入数字n并回车,跳转到第 n 行。

-
:!cmd:不退出 vim,直接对代码进行编译和运行。 -
:!gcc %:%代表当前文件名,可以直接编译当前代码。
分屏操作:(多文件代码对照)
看代码时经常需要对照,Vim 支持多文件分屏:
-
在底行模式输入
:vs(vertical split) 或:sp(split) 进行分屏。 -
按
Ctrl + ww可以在不同的分屏窗口之间切换光标。

4. Vim 配置
原生 Vim 就像一间毛坯房,能用但不够舒服。配置 Vim 其实就是修改一个叫 .vimrc 的文件。
4.1 配置文件
你只需要记住一个路径:~/.vimrc(Linux/Mac 系统)。如果这个文件不存在,自己新建一个即可。
在终端输入以下命令即可直接创建并打开它:
vim ~/.vimrc
4.2 操作逻辑
-
即时生效 :修改完
.vimrc保存退出后,下次打开 Vim 就会生效。 -
无需重启 :如果在 Vim 内部修改了配置,可以在底行模式输入
:source ~/.vimrc让它立刻生效,不用关掉重开。
打开 ~/.vimrc,把下面的代码复制进去并保存:
" 1. 显示行号(按 :set nonu 可临时取消)
set number
" 2. 开启语法高亮(代码终于有颜色了)
syntax on
" 3. 开启自动缩进(写代码换行会自动对齐)
set autoindent
" 4. 将 Tab 键变成 4 个空格(保证代码在不同电脑上对齐)
set tabstop=4
set expandtab
" 5. 开启鼠标支持(实在不会用键盘,允许你偶尔用鼠标滚轮)
set mouse=a