《 Linux 修炼全景指南: 七 》 指尖下的利刃:深入理解 Vim 的高效世界

作者:Lenyiin日期:2025/11/28

摘要

本篇《Linux Vim 入门指南》从零开始,系统而全面地介绍了 Vim 的操作理念、基础模式、光标移动、文本编辑、搜索替换、可视化模式、多窗口与多文件协作等核心能力,并深入讲解 Vim 配置、插件体系与高效编辑技巧。文章不仅涵盖新手最容易踩的坑,还通过实战示例带你完成一次完整的编辑任务,使读者不但 “会用 Vim”,更真正理解 Vim 背后的高效思维方式。无论你是 Linux 新手,还是想进一步提升编辑效率的开发者,这篇指南都将成为你学习 Vim 的最佳起点。

1、引言:为什么学 Vim?

当你第一次接触 Linux 时,Vim 几乎是无法绕开的存在。无论你是刚接触服务器的新手、学习 Linux 的大学生,还是希望进阶为后端工程师或运维工程师,Vim 迟早会成为你必须掌握的工具之一。许多初学者在第一次打开 Vim 时,都会被它的 “反直觉” 吓到:不能用鼠标、按键奇怪、甚至连退出都困难。但随着理解加深,你会发现 Vim 并不是为了 “折磨新手” 而存在,它是一种为了极致效率而设计的编辑方式。

1.1、Vim 是什么?为什么如此重要?

Vim 的全称是 “Vi IMproved”,它是 UNIX 系列系统中传统编辑器 vi 的增强版本。Vim 诞生于 1991 年,到今天仍然活跃在无数开发者与服务器管理员的日常工作中。它轻量、快速、几乎在所有 Linux 发行版中预装,并且可以在没有图形界面的环境下工作——这正是它成为服务器管理核心工具的原因。

你可能会在这样的场景中遇到 Vim:

  • 远程 SSH 到服务器,修改 Nginx、MySQL 配置
  • 在 Docker 容器内调试某个临时文件
  • 编写 C/C++ 程序或脚本
  • 修改系统启动项、网络配置、环境变量
  • 在纯命令行环境中进行快速文本处理

在这些场景中,图形化编辑器不存在,也无法安装
而 Vim,不管是 20 年前还是今天,都会安静地躺在那里、随时可用。

1.2、Vim 的核心优势:它为什么被认为很 “硬核”?

我们常常听到老程序员说:“Vim 是你最后需要学的编辑器。”
原因在于,Vim 有其他编辑器无法替代的一些特性:

1.2.1、极高的编辑效率

Vim 是模式化编辑器
它将 “移动光标” 和 “输入文字” 分离,让你不需要使用鼠标、方向键,就能以极快速度完成编辑。

例如:

  • 删除一个单词:dw
  • 删除一行:dd
  • 复制 3 行:3yy
  • 跳到文件末尾:G
  • 搜索某个词:/keyword

当你习惯这些操作后,你会发现
你的手几乎不用离开主键盘区,效率反而比鼠标更高

1.2.2、随时可用:没有 Vim 的 Linux 是不完整的

几乎所有 Linux 系统、类 UNIX 系统、服务器、容器,都内置 Vim 或 Vi。

这意味着:

  • 不需要安装
  • 不依赖图形界面
  • 不会因为环境限制无法使用

当你进入一台陌生的云服务器、跳板机、生产环境,
你能百分之百确定:Vim 会在那里。

1.2.3、Vim 功能强大,扩展性极高

Vim 本身是轻量的,但它的插件体系堪称 “外挂级”:

  • 文件树浏览(NERDTree)
  • 自动补全(coc.nvim)
  • 颜色主题
  • Git 集成
  • LSP(语言服务器协议)
  • 代码格式化
  • Markdown 预览

你甚至可以把 Vim 打造成一个类似 VSCode 的全功能 IDE。

1.2.4、Vim 是程序员与运维人员的通用语言

你是否见过这些场景:

  • LaTeX 教师用 Vim 讲课
  • 老程序员在终端飞快地敲字
  • 运维工程师用 Vim 编辑数百个配置文件
  • C++ 工程师使用 Vim 写算法题
  • 黑客工具与渗透环境几乎标配 Vim

这不是巧合。
Vim 已经成为技术人的一种共通技能,就像会使用 Git 和 Linux 一样重要。

1.3、新手为什么应该从 Vim 开始?

初学者常常觉得 “VSCode 很好用,为啥还学 Vim?”
但当你真正深入 Linux,就会发现:

  • VSCode 无法在服务器终端中运行
  • 容器内不会有 GUI
  • 某些系统只能 SSH 进入
  • 故障抢修时只能靠终端
  • 最关键的是:你不可能永远离开命令行环境

学习 Vim,不仅是学习一个编辑器,
更是学习 Linux 开发者的工作方式。

1.4、学 Vim 很难吗?

事实上,Vim 的学习曲线是 “前陡后平”。

  • 第一天:不知道怎么退出
  • 第一周:可以正常编辑文本
  • 一个月:开始意识到效率真的很高
  • 三个月:开始自定义配置
  • 半年后:你会发现所有可视化编辑器都变“慢”了

Vim 的难点在于 “模式编辑” 的概念需要习惯。
但一旦你跨过这个门槛,你的编辑思维方式会被完全改变。

1.5、这篇 Vim 入门指南能带给你什么?

本博客旨在让完全新手也能:

  • 理解 Vim 的模式与操作逻辑
  • 学会所有基础操作
  • 熟练移动、编辑与搜索
  • 掌握分屏、多文件、可视模式等强力功能
  • 配置自己的 .vimrc
  • 掌握插件管理器与常用插件
  • 知道如何在实际工作中使用 Vim
  • 最终能够顺畅地在 Linux 环境中完成一切文本编辑任务

你不需要任何 Vim 基础,也不需要背命令。
我们会逐步从 “最小可用” 带你走向 “流畅使用”,再到 “高效精通”。

2、Vim 的基础概念与操作模式

Vim 是一个 “模式化编辑器”,这使得它与所有常见图形编辑器(如 VSCode、Notepad++、Sublime Text)有本质差异。大多数编辑器都是 “所见即所得” 的输入模式,而 Vim 的核心理念是:
将编辑动作与文字输入分离,从而使编辑效率最大化。

为了掌握 Vim,你必须彻底理解下面三个关键点:

2.1、Vim 的三大核心模式

Vim 之所以看似 “反直觉”,就是因为它包含多个不同的操作模式。
最核心的三种模式是:

  1. 普通模式(Normal Mode)
  2. 插入模式(Insert Mode)
  3. 命令模式(Command Mode)

还有两个常用模式:

  • 可视模式(Visual Mode)
  • 替换模式(Replace Mode)

下面逐个讲清它们的用途、特性、切换方式。

2.1.1、普通模式(Normal Mode)——Vim 的默认模式

打开 Vim 的瞬间你就处于 Normal 模式,
这个模式不能直接输入字符,而是用于:

  • 移动光标
  • 删除内容
  • 复制、粘贴
  • 搜索
  • 调整文本结构
  • 执行命令

普通模式的理念是:
编辑行为应该快速且无需离开键盘主区域。

例如:

操作按键
左移h
下移j
上移k
右移l
删除当前字符x
删除整行dd
复制整行yy
粘贴p

为什么要用 h/j/k/l?
因为手不需要离开主键区,提高效率。

2.1.2、插入模式(Insert Mode)——像普通编辑器一样输入文字

只有在 Insert 模式下,你才能像平常一样打字。

进入方式:

  • i:在当前光标前插入
  • a:在光标后插入
  • o:在下一行插入新行
  • I:跳到行首插入
  • A:跳到行尾插入

退出 Insert 模式:

1Esc
2

Insert 模式简单易懂,但它不是 Vim 的高效核心。

2.1.3、命令模式(Command Mode)——执行高级命令

按下 : 可以进入命令模式。

你会发现命令行出现在下方,此时可以输入:

命令模式是 Vim 最强大的部分,几乎所有高级功能都通过它实现。

2.1.4、可视模式(Visual Mode)——选择文本范围

按下以下键进入可视模式:

  • v:字符选择模式
  • V:行选择模式
  • Ctrl + v:块选择模式(列编辑)

可视模式适用于:

  • 批量删除
  • 批量缩进
  • 批量格式化
  • 列编辑(非常强大)

例如:
选择多行 → >(右缩进),<(左缩进)

2.1.5、替换模式(Replace Mode)——覆盖文字

进入替换模式:

1R
2

当你希望覆盖文本而不是插入时,它非常有用。

2.2、模式切换总结表

模式进入方式退出方式用途
普通模式Vim 默认Esc移动、编辑、删除
插入模式i / a / o 等Esc输入文本
命令模式:Esc保存、查找、替换等
可视模式v / V / Ctrl+vEsc选择和批处理操作
替换模式REsc覆盖文本

2.3、Vim 的核心设计哲学:组合键是力量的来源

Vim 不使用多键快捷键(如 Ctrl + C),而是利用 动作(operator) + 范围(motion) 组合来生成各种功能。

例如:

1d + w    删除一个单词
2d + $    删除到行尾
3y + 2w   复制两个单词
4c + i + "   修改引号内文本
5

动作指令(operator):

  • d 删除
  • y 复制
  • c 修改(删除+进入插入模式)
  • v 选择

移动(motion):

  • w 单词
  • $ 行尾
  • 0 行首
  • } 下一段
  • ) 下一句

可以任意组合。
这就是 Vim 能做到 “极致高效” 的原因。

2.4、数字前缀:批量操作的神器

Vim 提供数字前缀:

13dd    删除 3 
210j    光标向下 10 
35yy    复制 5 
42w     向前跳 2 个单词
5

数字 + 动作 / 移动,是 Vim 的基础逻辑。

2.5、状态栏提示 —— Vim 不会让你迷路

在 Vim 底部状态栏,通常会提示当前状态,例如:

1-- INSERT --
2-- VISUAL --
3-- REPLACE --
4

如果你不知道自己在哪个模式,
按 Esc 几次
你就能回到 Normal 模式。

2.6、为什么 Vim 的模式化设计如此重要?

因为它让你:

  • 不必使用鼠标
  • 不必离开键盘主区
  • 不用在多按键组合中绕来绕去
  • 所有操作都能联动组合
  • 每个编辑动作都可以扩展成“高效率动作”

例如删除一个单词:
VSCode 需要选中 → 按删除
Vim:

1dw
2

删除括号内内容:

1di)
2

修改函数体:

1ci{
2

越学你就越会爱上这种精准而快速的编辑方式。

2.7、本章小结

在这一章中,你学习了 Vim 的核心本质:

  • Vim 是模式化编辑器
  • 学习 Vim 的关键不是记快捷键,而是理解操作模式
  • Vim 的强大来自动作 + 移动 的组合
  • 理解模式切换是迈入 Vim 世界的第一步
  • 所有效率的来源是:双手不离键盘主区

在接下来的章节中,我们会正式进入最关键的部分:
光标移动、文本编辑、搜索、替换、分屏、文件管理等真正的 Vim 技能。

3、基础启动方式与文件操作

作为一个编辑器,Vim 最常用的能力就是——启动它、打开文件、编辑内容、保存退出。这些操作虽然看似基础,却是新手最容易混淆的地方,也是学好 Vim 的第一步。本章将系统地介绍 Vim 的启动方式、文件打开方式、保存退出逻辑,以及常见的文件操作方法。

3.1、启动 Vim 的多种方式

Vim 的启动方式非常灵活,可以根据你的工作场景选择不同模式。

3.1.1、直接启动 Vim(不指定文件)

1vim
2

效果:启动空白 Vim 界面,此时你可以通过 :e 文件名 打开文件。

3.1.2、启动并打开指定文件

1vim file.txt
2

如果 file.txt 存在 → 直接打开
如果 file.txt 不存在 → 创建一个新文件(保存后生成)

3.1.3、同时打开多个文件

1vim file1.txt file2.txt file3.txt
2

不同文件会被加载到不同 buffer 中,你可以通过:

  • :bn → 下一个文件(buffer next)
  • :bp → 上一个文件(buffer previous)
  • :ls → 查看当前打开的文件列表

3.1.4、以只读模式打开文件

适用于查看系统配置文件,例如 /etc/fstab

1vim -R /etc/fstab
2

此模式无法直接修改文件。

3.1.5、启动 Vim 并跳转到指定行号

1vim +25 file.txt
2

打开并跳到第 25 行。

跳到文件末尾:

1vim + file.txt
2

3.1.6、启动 Vim 并执行命令

1vim +"set number" file.txt
2

这在复杂自动化环境中很常用。

3.2、文件保存、退出与常见误区

新手最容易卡住的就是 “怎么退出 Vim”。

Vim 没有像普通编辑器那样的 “关闭窗口 X”,而是通过命令模式完成。

3.2.1、保存文件

1:w
2

保存但不退出。

3.2.2、保存并退出

1:wq
2

更常用的简写:

1:x
2

3.2.3、强制退出(不保存)

1:q!
2

如果你改乱了文件或只是想退出查看,这个非常有用。

3.2.4、保存到另一个文件(另存为)

1:w newfile.txt
2

也可以复制文件:

1:w ~/backup_config.txt
2

3.2.5、如果文件是只读的(需要 sudo)

常见场景:编辑 /etc/hosts
你会遇到错误:“E45: ‘readonly’ option is set”

正确方式:

1sudo vim /etc/hosts
2

如果已经进了 Vim 才发现需要权限:

1:w !sudo tee %
2

非常实用!

3.3、在 Vim 中打开、创建和切换文件

Vim 不需要退出编辑器就可以打开其他文件。

3.3.1、打开另一个文件

1:e another.txt
2

如果文件不存在,会自动创建。

3.3.2、切换到上一次编辑的文件

1:e #
2

适用于频繁来回编辑不同文件的场景。

3.3.3、打开当前目录下文件(智能补全)

输入:

1:e <Tab>
2

会自动补全文件名,比手敲更快。

3.3.4、查看当前打开的文件列表(buffer)

1:ls
2

显示所有 buffer 状态:

  • % 当前文件
  • # 前一个文件
  • a 活动
  • h 已隐藏

3.3.5、切换 buffer

  • 下一个 buffer::bn
  • 上一个 buffer::bp
  • 跳到指定 buffer::b 数字

例如:

1:b 3
2

打开 buffer 3 的文件。

3.4、文件删除、重命名与外部命令结合

Vim 可以执行外部命令,非常强大。

3.4.1、删除文件

1:!rm file.txt
2

在 Vim 中直接使用 Linux 命令。

3.4.2、重命名文件

1:!mv old.txt new.txt
2

然后刷新:

1:e %
2

3.4.3、查看当前文件路径

1:echo expand('%:p')
2

可以显示绝对路径,非常实用。

3.4.4、新建一个空文件并编辑

1vim newfile.txt
2

或者在 vim 内:

1:e newfile.txt
2

3.5、使用 Vim 查看系统配置文件

很多 Linux 用户都依赖 Vim 编辑系统配置:

  • /etc/hosts
  • /etc/fstab
  • /etc/nginx/nginx.conf
  • /etc/ssh/sshd_config

推荐快捷写法:

1sudo vim /etc/nginx/nginx.conf
2

Vim 适用于查看带格式文件:

  • JSON
  • YAML
  • XML
  • C/C++
  • Shell
  • Python
  • 日志文件

Vim 通过语法高亮和缩进规则让它们结构清晰。

3.6、小结

在本章中,你学习了:

  • 各种 Vim 的启动方式
  • 如何打开、创建、切换文件
  • 保存、退出、另存为、强制退出等必备操作
  • 如何在 Vim 中结合 Linux 命令
  • 文件路径、Buffer、配置文件编辑的常见技巧

这些知识是 Vim 的 “生门”,掌握它们后,你就真正能把 Vim 当作一个可靠的日常编辑器使用。

4、Vim 的光标移动详解(新手必须掌握)

Vim 的移动能力是它高效编辑的核心。如果你只会用方向键在文件里慢慢移动,那你还远远没有发挥出 Vim 的真正实力。本章将从基础到高级,全面讲解 Vim 的所有光标移动方式,帮助你以极高效率在文档中跳转。

4.1、基础光标移动:h / j / k / l

在普通编辑器中,我们用方向键移动光标。但 Vim 鼓励手不离开主键区,因此使用:

  • h:向左移动
  • j:向下移动
  • k:向上移动
  • l:向右移动

可以配合数字使用:

15j   # 向下移动 5 
23h   # 向左移动 3 个字符
3

使用技巧:

  • 建议从一开始就减少使用方向键,甚至可以在配置中禁用方向键。
  • h/j/k/l 可以实现字符级和行级的最基础移动。

4.2、行级快速移动

Vim 提供了大量 “在当前行快速跳转” 的命令。

4.2.1、行首与行尾

  • 0:跳到行首(绝对行首)
  • ^:跳到本行第一个非空白字符
  • $:跳到行尾

比如在编辑代码时,^ 是最常用的,因为会跳过缩进。

4.2.2、在行内跳到某字符

非常强大的跳转方式:

  • f<char>:向右跳到某字符
  • F<char>:向左跳到某字符
  • t<char>:向右跳到某字符之前
  • T<char>:向左跳到某字符之后

例如:

1fa     # 跳到当前行下一个 a
2t)     # 跳到 ")" 前一个字符
3

用于代码行编辑非常高效。

配合 ;, 可以重复跳转:

  • ;:重复上一次 f/t/F/T
  • ,:反向重复

4.3、单词级跳转:w / e / b

单词移动是 Vim 的核心技能之一。

4.3.1、按单词跳

  • w:跳到下一个单词开头
  • e:跳到当前/下一个单词结尾
  • b:跳到当前/前一个单词开头

举例:

1w     # 看到下一个单词头
23w    #  3 个单词
3

4.3.2、按 “大单词” 跳(包含符号)

大写命令忽略符号拆分:

  • W:下一个大单词开头
  • E:当前/下一个大单词结尾
  • B:前一个大单词开头

区别:

1hello_world-test
2

w 会按照 _- 作为边界
W 会把整个 “hello_world-test” 视为一个大单词

4.4、行间跳转:gg / G / nG

这些命令让你在文件任意位置间瞬移。

4.4.1、文件头尾跳转

  • gg:跳到文件第一行
  • G:跳到文件最后一行

4.4.2、跳到指定行号

142G     # 跳到第 42 
2:42     # 同效果
3

跳转日志文件、配置文件非常常见。

4.5、屏幕维度跳转:H / M / L

以当前屏幕显示区域为参照跳转:

  • H(High):跳到屏幕最上方一行
  • M(Middle):跳到屏幕中间一行
  • L(Low):跳到屏幕最下方一行

非常适合浏览长文件。

4.6、段落、句子跳转

Vim 可以按语义跳转:

按段落跳

  • {:跳到上一段开始
  • }:跳到下一段开头

段落通常以空行分隔。

按句子跳

  • (:上一句
  • ):下一句

适用于查看 Markdown、文本类文章。

4.7、搜索跳转:/ 与 ?

搜索是 Vim 最强大的跳转方式之一。

4.7.1、向下搜索

1/关键字
2

按 Enter 后:

  • n:下一个匹配
  • N:上一个匹配

4.7.2、向上搜索

1?关键字
2

功能同上。

4.7.3、搜索当前光标所在单词

  • *:向下搜索当前单词
  • #:向上搜索当前单词

非常适合搜索变量名、函数名。

4.8、跳转历史(非常重要)

Vim 会记录你的跳转路径,这允许像浏览器“前进/后退”一样穿梭。

  • Ctrl-o:跳回上一个位置(后退)
  • Ctrl-i:跳到下一个位置(前进)

适用于复杂编辑场景(如跳到多个文件再返回)。

4.9、标记(marks)跳转

标记是高级用户必学技能。

4.9.1、设置标记

1ma     # 在当前行设置标记 a
2

4.9.2、跳转到标记

  • 'a:跳到标记 a 所在行
  • a`:跳到标记 a 的精确位置(列也对齐)

非常适用于在文件两端来回编辑。

4.10、文档结构跳转(函数、括号、语法)

4.10.1、括号匹配跳转

在括号上按:

1%
2

自动跳到配对的括号(适用于 {}, (), [])

4.10.2、快速跳到函数/代码块开头

在代码语言中:

  • [[:跳到上一个函数开始
  • ]]:跳到下一个函数开始

适用于 C、C++、Python、Java 等。

4.11、窗口级跳转(多个 split 时)

Vim 支持拆分窗口:

  • Ctrl-w h:左
  • Ctrl-w l:右
  • Ctrl-w j:下
  • Ctrl-w k:上

文件对比、查日志时非常有用。

4.12、Tab 页跳转

1gt     # 下一 Tab
2gT     # 上一 Tab
3

4.13、组合移动:数字 + 移动命令

任何移动命令都可以加数字增强:

110j    # 向下 10 
25w     # 向前 5 个单词
33e     # 跳到  3 个单词结尾
42f,    # 当前行第二个 “,”
5

4.14、光标移动的实战技巧与建议

技巧 1:减少方向键,强制使用 hjkl

这是提升 Vim 水平的重要一步。

技巧 2:搜索结合跳转是最快方式

在大型文件中,最有效跳转方法永远是:

1/关键字 + n
2

技巧 3:f/t 是行编辑神器

定位分号、括号、引号特别快。

技巧 4:gg/G 对日志文件非常重要

比如查看新的 nginx 日志:

1G     # 立刻跳到末尾
2

技巧 5:使用 Ctrl-o 和 Ctrl-i 管理跳转历史

可以像浏览器一样“后退/前进”。

4.15、小结

本章系统介绍了 Vim 的所有光标移动方式,包括:

  • 字符级移动:h j k l
  • 行内跳转:0 ^ $ f/t
  • 单词跳转:w e b W E B
  • 行间跳转:gg G nG
  • 搜索跳转:/ ? * #
  • 屏幕级跳转:H M L
  • 结构跳转:() {} [] % [[ ]]
  • 历史跳转:Ctrl-o / Ctrl-i
  • 标记跳转:ma 'a
  • 多文件、多窗口跳转

熟练掌握这些移动方式,你将实现从“移动光标是负担”到“移动光标就是一种享受”的转变。

5、文本编辑:增删改查完整指南

在 Vim 中,移动光标只是高效编辑的基础,而真正提升效率的核心,在于编辑命令本身。Vim 将编辑思路抽象为:

操作符(Operator) + 范围(Motion) = 编辑动作

例如:

1dw    # 删除一个单词
2c3w   # 修改三个单词
3d$    # 删除到行尾
4y2}   # 复制两段
5

本章将系统讲解 Vim 的所有编辑操作,让你可以快速、精准、高效地修改文本。

5.1、插入文本(Insert)模式详解

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

5.1.1、基础插入命令

命令说明
i在光标前插入
a在光标后插入
I在本行第一个非空字符处插入
A在行尾插入

非常常用的组合:

1A      # 光标跳到行尾,并进入插入模式 —— 编辑代码神器
2I      # 跳到缩进后开始 —— 编辑代码行头
3

5.1.2、插入新行

命令说明
o下方新开一行并进入插入模式
O上方新开一行并进入插入模式

例如:

1o  # 写文档时最常用
2O  # 向上插内容很方便
3

5.2、删除(Delete)操作:d 命令体系

删除在 Vim 中被称为 delete(但其实本质是剪切)。

基础删除命令

命令功能
x删除光标所在字符
X删除光标左侧字符
dd删除整行(剪切整行)
D 或 d$删除到行尾
d0删除到行首
dw删除光标到单词尾
diw删除当前单词(不包含周围空格)
daw删除当前单词(包含周围空格)

示例:

14dd   # 删除 4 
2d2w   # 删除两个单词
3

diw / daw 是编辑代码、文档时最强大的删除指令之一。

5.3、修改(Change)操作:c 命令体系

c 类似 d,但删除后会直接进入 insert 模式。

命令功能
c + motion删除范围并进入插入模式
cc修改整行(删除并进入插入模式)
cw修改单词的剩余部分
ciw修改整个单词
caw修改单词并保留格式
C修改到行尾(同 c$)

例如:

1ci"   # 修改引号中的内容
2ci(   # 修改括号中的内容
3ci[   # 修改方括号中的内容
4

ci 系列是 Vim 编辑逻辑结构最强大的命令之一:

  • ci( ci[ ci{ ci" ci'
  • 自动识别配对符号自动选中内容并修改

适用于代码开发、配置文件编辑等所有场景。

5.4、替换字符(Replace)操作

5.4.1、替换单个字符

1r<char>
2

示例:

1ra    # 将光标字符修改为 a
2

5.4.2、进入替换模式(连续替换)

1R
2

作用:像敲字一样覆盖原有文字,不是插入。

适用于对齐、覆盖、修复格式等场景。

5.5、复制与粘贴:y / p 命令体系

Vim 中复制叫 yank(提取),粘贴叫 put。

5.5.1、复制命令(y)

命令说明
yy复制整行
y$复制到行尾
y0复制到行首
yw复制一个单词
yiw复制当前单词
yaw复制整个单词(含空格)

5.5.2、粘贴命令(p / P)

命令说明
p粘贴到光标后(行粘贴则在下方)
P粘贴到光标前(行粘贴则在上方)

例如:

1yy
2p   # 复制一行  粘贴到下一行
3

行级粘贴自动保持缩进。

5.6、全文替换(substitute)命令

Vim 支持强大的替换语法:

1:s/old/new/       # 替换当前行第一个
2:s/old/new/g     # 替换当前行所有
3:%s/old/new/g    # 替换全文
4:%s/old/new/gc   # 替换全文并确认(推荐)
5

示例:

1:%s/\<test\>/TEST/gc
2
  • \< \> 表示单词边界
  • 避免误替换部分词(如 “testing”)

5.7、可视模式(Visual mode)编辑

可视模式让你像一般编辑器那样选中内容,但更强大。

进入可视模式

命令模式
v字符选择
V行选择
Ctrl-v列块选择(block visual mode)

可视模式常用操作

在选中区域后:

命令功能
d删除
y复制
c修改
>向右缩进
<向左缩进
~大小写反转

列块模式实例:批量插入 / 删除

添加注释:

1Ctrl-v   # 进入列模式
2选中多行
3I#<Esc>  # 在每行前加上注释
4

去掉注释:

1Ctrl-v
2选中 #
3x
4

对代码、对齐、日志处理非常强。

5.8、使用寄存器(Registers)进行高级编辑

Vim 的寄存器类似剪贴板。

5.8.1、查看所有寄存器

1:reg
2

5.8.2、复制到指定寄存器

1"ayy    # 复制一行到寄存器 a
2"byw    # 复制单词到寄存器 b
3

5.8.3、从寄存器粘贴

1"ap
2

5.8.4、特殊寄存器

寄存器说明
"默认寄存器
0保存最近 yank 的内容(不会被删除覆盖)
*系统剪贴板(需要 +clipboard 编译)
_黑洞寄存器(丢弃内容)

例如:

1"_dd    # 删除行但不进入剪贴板
2

防止覆盖复制内容。

5.9、重复与撤销 —— 编辑的时间机器

5.9.1、重复命令

1.
2

重复上一次操作。

例:

1dw
2.    # 再删一个单词
3.    # 再删一个单词
4

. 是 Vim 中最强大的效率武器之一。

5.9.2、撤销与重做

命令功能
u撤销
Ctrl-r重做

5.10、高级编辑技巧(金刚组合拳)

技巧 1:ci 系列操作

1ci"   # 修改引号内文本
2ci(   # 修改括号内文本
3ci{   # 修改花括号内容
4

技巧 2:可视块 column edit

适用于批量缩进/注释/对齐。

技巧 3:使用 . 重复操作

删除多行:

1dd .
2

编辑重复结构文本尤为高效。

技巧 4:数字前缀加任意编辑命令

15dw    # 删除 5 个单词
210x    # 删除 10 个字符
33dd    # 删除 3 
4

技巧 5:结合搜索与操作进行编辑

1d/foo   # 删除到 foo
2c/bar   # 修改到 bar
3

让你像 “激光定向切割” 一样编辑。

5.11、小结

本章从非常基础的增删改查开始,逐步扩展到 Vim 的完整编辑体系,包括:

  • 插入(i/a/I/A/o/O)
  • 删除(d 系列)
  • 修改(c 系列)
  • 替换(r/R)
  • 复制/粘贴(y/p)
  • 可视模式(v/V/Ctrl-v)
  • 全文替换(😒)
  • 寄存器操作
  • 重复(.)与撤销(u/Ctrl-r)
  • 搜索结合操作
  • 用 motion 指定编辑范围(dw / ci" / d})

6、Vim 搜索与替换(强力编辑核心)

作为一名高效的开发者或运维人员,掌握 Vim 的搜索与替换技巧几乎是必不可少的。搜索让你在大型文件中快速定位内容,而替换能够帮助你批量修改文本内容、修正变量名、规范格式,是提升工作效率的重要技能。本章节将从最基础的单词搜索讲起,一直到正则表达式、多文件替换、全局替换等高级技巧,帮助你在 Vim 中实现真正的 “所见即所得的速度感”。

6.1、基础搜索:查找文本的所有方法

Vim 中的搜索基于正则表达式的强大能力,功能远超普通编辑器。本节从最常用的 / 搜索开始。

6.1.1、前向搜索:使用 /

格式:

1/要搜索的内容
2

按下 / 后输入关键字,按下 Enter 即可向光标之后搜索。

示例:

1/main
2

若文件中有 main,光标会跳到第一个匹配位置。

6.1.2、后向搜索:使用 ?

格式:

1?关键字
2

示例:

1?error
2

光标向上寻找 error

6.1.3、搜索导航:跳转到下一个匹配

  • n:跳到下一个匹配(同方向)
  • N:跳到上一个匹配(反方向)

无论你是 / 还是 ? 搜索,n/N 都能继续浏览结果,非常方便。

6.1.4、高亮搜索匹配

让搜索结果自动高亮:

1:set hlsearch
2

关闭高亮:

1:set nohlsearch
2

临时取消高亮(不关闭功能):

1:noh
2

6.1.5、增量搜索:输入即搜索

1:set incsearch
2

开启后输入 /mai 时,光标会实时跳转到第一个匹配位置,非常高效。

6.2、搜索模式与正则表达式

Vim 的搜索使用类 regex 的规则,可以进行强大的文本匹配。

6.2.1、匹配行首与行尾

  • 行首:^
  • 行尾:$

举例:

1/^int     "匹配以 int 开头的行"
2/;$      "匹配以 ; 结束的行"
3

6.2.2、匹配任意字符与数量

  • .:匹配任意单字符
  • *:匹配 0 次或多次
  • \+:匹配 1 次或多次(Vim 特有)

示例:

1/fo.*bar   "匹配 foo...bar"
2/ab\+c     "匹配 abbbbbc"
3

6.2.3、字符集与范围

1/[0-9]      "匹配任意数字"
2/[a-zA-Z]   "匹配任意字母"
3/[^a-z]     "匹配非小写字母"
4

6.2.4、单词匹配

  • \<:单词开始
  • \>:单词结束

示例:

1/\<int\>   "只匹配单词 int,不匹配 integer"
2

6.3、替换命令:从简单到复杂的完整规则

替换命令格式:

1:[范围]s/原内容/新内容/[标志]
2

这是 Vim 最重要的命令之一。

6.4、最常用替换操作:快速上手

6.4.1、只替换当前行第一个匹配

1:s/old/new/
2

替换当前行第一个 oldnew

6.4.2、替换当前行所有匹配

1:s/old/new/g
2

g 表示全局(global)。

6.4.3、全文替换(最常用)

1:%s/old/new/g
2

用法意义:

  • % 表示全文范围
  • s 表示替换
  • g 表示替换所有匹配

6.4.4、替换时确认每次替换

加入 c 标志:

1:%s/old/new/gc
2

每次出现 old,Vim 会提示:

1replace with new? (y/n/a/q/l)
2

非常适用于敏感修改。

6.5、替换范围:行范围控制

你可以指定行区间:

6.5.1、指定行号替换

替换第 10 到 20 行:

1:10,20s/old/new/g
2

6.5.2、使用.(当前行)与 $(最后一行)

从当前行到末尾:

1:.,$s/old/new/g
2

6.5.3、使用搜索结果确定范围

从第一次出现 foo 到第一次出现 bar:

1:/foo/,/bar/s/old/new/g
2

这是 Vim 独有的高级技巧,非常强大。

6.6、特殊替换技巧:提高效率的不传之秘

6.6.1、替换时保留部分内容(使用分组)

1:%s/hello\(.*\)world/hi\1earth/g
2

\1 表示第一个括号内的内容。

6.6.2、删除某一模式(新内容为空)

1:%s/deleteMe//g
2

6.6.3、替换字符串中包含 / 的情况

使用其他分隔符:

1:%s+/usr/bin+/usr/local/bin+g
2

任何非字母数字都可以作为分隔符,如 # | , 等。

6.7、大文件优化:快速搜索技巧

6.7.1、使用 vimgrep 多文件搜索

1:vimgrep /main/ *.c
2

搜索后通过:

  • :cnext
  • :cprev
  • :copen

进行跳转。

6.7.2、使用 :grep 外部搜索程序(如 ripgrep)

如果系统安装了 rgag

1:grep -R "hello" .
2

这是大型项目最快的方法。

6.8、多文件替换:真正的工程级技能

6.8.1、在多个文件中替换所有旧名字

1:args *.c
2:argdo %s/oldName/newName/g | update
3

update 表示仅在文件有变化时写入。

6.8.2、更复杂的批量替换流程

1:vimgrep /oldName/ **/*.c
2:copen
3:cfdo %s/oldName/newName/g | update
4

这是 Vim 替换工程中变量名的一种常见方式。

6.9、小结:掌握搜索与替换,你的 Vim 才真正“活了”

Vim 的搜索与替换体系强大到令人惊讶。从最基础的 / 搜索,到全文替换、正则表达式、多文件替换,都让它成为文本处理的利器。掌握这些内容后,你会逐渐体验到 Vim 的真正魅力:用最少的按键完成最复杂的编辑任务,让你在高效率的路上越走越稳。

7、可视化模式(Visual Mode)入门与精通

在 Vim 的众多操作模式中,可视化模式(Visual Mode)是一个极其强大却常被新手忽视的模式。它让你可以像现代编辑器一样 “选中内容再操作”,但又远超鼠标选择的能力,能实现可视化批量操作、矩形选区编辑、多行编辑、删除替换、缩进格式化等强力功能。

如果你希望在 Vim 中提升编辑效率,那么精通 Visual Mode 是迈向高手的关键步骤之一。

本章将带你从入门到精通 Visual Mode:了解 Visual 的三种模式、常用操作、典型场景、矩形编辑技巧等。

7.1、什么是可视化模式?

可视化模式是 Vim 中用于选择文本的一整套操作方式。当你进入可视化模式后,你可以通过移动光标来扩展或缩减选区,选中后可以进行:

  • 删除
  • 复制
  • 粘贴
  • 替换
  • 缩进
  • 格式化
  • 大小写转换
  • 多行批量操作
  • 列编辑(矩形选择)

可视模式提供了三种方式:

  1. 字符可视模式(Visual) —— 逐字符选择(v
  2. 行可视模式(Visual Line) —— 以行为单位选择(V
  3. 块可视模式(Visual Block) —— 列矩形选择(Ctrl + v

7.2、三种可视模式的详细说明

7.2.1、字符可视模式(v)

进入方式:

1v
2

作用:
从光标处开始选中具体字符范围

示例场景:

  • 只选中某段单词的一部分
  • 选中某个括号内的内容
  • 精准选择不规则区域

常用操作:

1d   删除选区
2y   复制选区
3c   修改选区
4~   大小写反转
5u   全部转为小写
6U   全部转为大写
7>   增加缩进
8<   减少缩进
9

7.2.2、行可视模式(V)

进入方式:

1V
2

作用:
选中一整行,无论光标在哪个位置。

场景:

  • 批量处理多行代码
  • 一次性注释、删除、复制代码块
  • 配合 > < 调整缩进

示例:

1Vjjd     选中当前行往下两行  删除
2

7.2.3、块可视模式(Ctrl + v)

进入方式:

1Ctrl + v
2

这是 Vim 的“神器”之一,可进行矩形列选择。

矩形选择能够:

  • 编辑多行的同一列
  • 批量插入前缀
  • 批量删除列文本
  • 编辑多行的函数对齐
  • 在列上添加注释、分号、冒号等

例子非常多,后面会详细讲。

7.3、Visual Mode 的光标移动(重点)

你可以在可视模式中使用所有普通模式的光标移动键:

  • h j k l
  • w b e:按单词移动
  • { }:按段落移动
  • 0 $:移到行首行尾
  • f{char}:移动到某字符下一个出现的位置
  • %:跳转括号配对
  • gg G:跳到文件开头/结尾

可视选区会随着光标移动实时更新,非常直观。

7.4、可视模式最常用操作大全

以下所有快捷键都在 Visual Mode 下有效:

操作快捷键说明
删除d删除选区
复制y复制选区
修改c删除并进入插入模式
粘贴p粘贴到选区后
缩进> <批量缩进/反缩进
格式化=自动对齐代码
大小写u/U/~小写、大写、反转
选择扩展到匹配括号%强大的代码操作技巧

7.5、实用技巧:可视模式批量操作实例

以下是一些新手与高手都会用到的技巧。

7.5.1、批量给多行添加注释

选中多行:

1Vjj
2

添加注释:

1I// <Esc>
2

解释:

  • I:在选区每行行首插入内容
  • <Esc>:应用到所有行

7.5.2、批量删除多行的同一列字符(如对齐的分号)

进入块可视模式:

1Ctrl + v
2

移动光标选择需要删除的列,然后按:

1d
2

7.5.3、多行批量添加缩进

1V10j >     "向右缩进11行
2V3k  <     "向左缩进4行
3

7.5.4、替换一整块文本

1v  选区
2c  修改内容
3

7.5.5、自动格式化一组代码

1V%
2=
3

说明:

  • V%:选中括号内所有内容
  • =:格式化代码

7.6、Visual Block(可视块)模式高级操作

Visual Block 是 Vim 的强大武器之一。

7.6.1、给多行添加公共前缀(如注释)

1Ctrl + v
2j j j
3I// <Esc>
4

例如给 10 行代码全部加上 //

7.6.2、给多行添加公共后缀(如逗号)

1Ctrl + v
2选中列
3A, <Esc>
4

7.6.3、多行批量对齐变量、等号等

示例代码:

1int a = 1;
2long variableName = 2;
3char c = 3;
4

使用块可视:

1Ctrl + v
2$ 选中到末尾
3=
4

自动对齐变得整齐美观。

7.7、可视模式结合搜索的高级用法

7.7.1、搜索并开始可视选择

1/hello
2v
3

7.7.2、选中两个搜索结果之间的文本

1/begin
2v
3/end
4

直接选中 begin 与 end 间的所有内容。

7.8、可视模式 + 寄存器:增强复制粘贴

在 Visual Mode 中:

1"ay     复制到寄存器 a
2"kp     从寄存器 k 粘贴
3

适用于代码片段管理。

7.9、恢复选区(超实用)

误按 ESC 取消可视模式了?

按:

1gv
2

恢复上次选区!
这是 Vim 用户最喜欢的小技巧之一。

7.10、小结:Visual Mode 是你在 Vim 中的 “增强手臂”

可视化模式既保留了现代编辑器的直观性,又有强大的块操作能力。掌握 Visual Mode,你可以:

  • 批量修改代码
  • 快速删除/复制结构化文本
  • 进行列编辑
  • 完整控制每一段内容的格式与对齐

学会这些内容,你已经具备了 Vim 高效编辑的核心技能。

8、多窗口与多文件编辑(Vim 的生产力关键)

对于初学者来说,Vim 是一个 “单文件编辑器”;但对于真正的使用者来说,Vim 是一个强大的多文件、多窗口集成开发环境。你可以在同一个 Vim 实例中同时打开多个文件,将文件并排显示、上下分屏、快速切换、同步编辑,甚至可以把 Vim 当成轻量级 IDE 来使用。

本章将从基础到进阶,全面讲解 Vim 的多窗口(window)、多缓冲区(buffer)、多标签页(tab)操作,让你真正掌握 Vim 的生产力武器。

8.1、关键概念:Buffer、Window、Tab 之间的关系

在正式操作之前,必须理解 Vim 的三个核心概念:

8.1.1、Buffer(缓冲区)—— “文件的载体”

你打开一个文件,Vim 并不是直接在文件上操作,而是把它加载到内存中的 buffer

  • 一个 buffer = 一个正在编辑的文件内容副本
  • 修改 buffer 后,通过 :w 才写回磁盘
  • buffer 即使不显示在窗口中也仍然存在

查看所有缓冲区:

1:ls
2

8.1.2、Window(窗口)——“Buffer 的视图”

窗口是 buffer 的可视化呈现方式。

  • 多个窗口可以显示同一个 buffer
  • 常用来做 “代码对照”、“一边写一边看头文件”等任务
  • 关闭窗口不会删除 buffer

8.1.3、Tab(标签页)——“窗口组”

一个 Tab 是多个窗口的集合。

  • 每个 Tab 可以包含多个 window
  • 各自独立布局
  • 用途类似 VSCode 里的多个工作区

8.2、多文件打开方式

Vim 支持多种一次性打开多个文件的方法。

8.2.1、启动时打开多个文件

1vim file1 file2 file3
2

Vim 会加载多个 buffer,但显示一个窗口。

8.2.2、在 Vim 内打开文件

1:e main.c
2:e test.c
3

8.2.3、文件切换命令

命令作用
:bn切到下一个 buffer
:bp切到上一个 buffer
:b 3切到 buffer 3
:b filename通过文件名部分匹配切换

8.3、分屏(Window Split)与窗口管理

分屏是 Vim 的生产力关键之一,操作非常灵活。

8.3.1、水平分屏

1:sp file
2

不带文件名:

1:sp
2

表示分屏显示当前文件的两个视图。

8.3.2、垂直分屏

1:vsp file
2

同理:

1:vsp
2

表示垂直分屏当前 buffer。

8.3.3、分屏的快捷窗口切换

快捷键功能
Ctrl + w h移动到左边窗口
Ctrl + w l移动到右边窗口
Ctrl + w j移动到下边窗口
Ctrl + w k移动到上边窗口
Ctrl + w w在窗口间循环切换

8.3.4、调整分屏大小

1Ctrl + w =     让所有窗口等宽等高
2Ctrl + w +     增加高度
3Ctrl + w -     减少高度
4Ctrl + w >     增加宽度
5Ctrl + w <     减少宽度
6

8.3.5、关闭窗口

1Ctrl + w c    关闭当前窗口
2Ctrl + w q    如果只剩一个窗口则退出 Vim
3

8.4、在多个窗口中同步查看同一文件

8.4.1、分屏显示同一个文件

1:sp
2:vsp
3

这样你可以:

  • 上面看定义,下面看实现
  • 左边看头文件,右边看源文件
  • 一边查找,一边阅读结果

8.4.2、光标同步滚动(可选插件功能)

Vim 原生不支持,但你可以:

  • 在左窗口查找符号(*
  • 在右窗口查看对应上下文

8.5、标签页(Tab)操作

标签页适合组织项目文件,让 Vim 像 IDE 一样使用。

8.5.1、创建标签页

1:tabnew file
2

不带文件名:

1:tabnew
2

打开空的窗口组。

8.5.2、常用 Tab 操作

命令说明
:tabn下一个标签
:tabp上一个标签
:tabc关闭当前标签
:tabo关闭其他标签,只保留当前

8.5.3、使用快捷键切换标签

1gt     Go to next tab
2gT     Go to previous tab
3

8.6、多文件编辑常用技巧(提高学习效率)

8.6.1、使用 quickfix 显示搜索结果/编译错误

搜索结果:

1:vimgrep /pattern/ *.c
2:copen
3

打开 quickfix 窗口后,可以:

1:cn   下一个匹配
2:cp   上一个匹配
3

适用于大型项目。

8.6.2、快速打开最近编辑的文件

1:e #
2

超级实用的切回前一个文件技巧。

8.6.3、使用 :args 管理文件参数列表

1:args *.c
2

然后:

1:next
2:previous
3

在文件列表中快速跳转。

8.7、多窗口与多文件编辑的典型使用场景

场景 1:头文件与源文件对照编辑

1:vsp main.c
2:vsp main.h
3

通过 Ctrl + w h/l 快速切换查看声明与实现。

场景 2:复制某个函数到另一个文件

左窗口:源文件
右窗口:目标文件

1Ctrl + w v
2

用 Visual Mode 选中并粘贴。

场景 3:查找跨文件内容并快速定位

1:vimgrep /someFunc/ *.c
2:copen
3

场景 4:使用标签页组织不同模块

tab1:网络模块
tab2:数据库模块
tab3:日志模块

8.8、Buffer、Window、Tab 之间最佳实践建议

  • 用 buffer 管理文件:随时切换,不要重复打开同一个文件
  • 用 window 分屏阅读和对照
  • 用 tab 组织不同主题的任务
  • 不要滥用 tab(不是 Chrome)

结构建议:

  • 编辑同一模块:多窗口
  • 跨模块开发:多标签页
  • 批量操作:buffer 切换

8.9、小结:多窗口与多文件是 Vim 的生产力核心

如果说普通输入与光标移动是 Vim 的基础,那么多窗口与多文件编辑就是 Vim 的“战斗力”。
掌握这些,你就可以:

  • 一次性处理多个文件
  • 并排对照内容
  • 在大型项目中高效导航
  • 实现接近 IDE 的开发体验

这部分能力通常是新手与高手的真正分水岭。
如果你已经掌握了这些技巧,你已经迈入 Vim 高效编辑的大门。

9、Vim 常用配置与 .vimrc 入门

如果说 Vim 的模式、移动、编辑命令构成了 “基础能力”,那么配置文件 .vimrc 则是让 Vim 真正成为 “你的编辑器” 的关键所在。Vim 的强大不仅来自它本身,更来自它极高的可定制度:几乎所有行为都可以控制、修改甚至扩展。

这一章将从基础概念、常用配置,到插件系统、结构化配置逐步讲解,让你能够打造自己的高效 Vim 环境。

9.1、Vim 配置文件简介

Vim 的配置分为两类:

9.1.1、用户级配置

路径:

1~/.vimrc     (最常使用)
2

特点:

  • 当前用户专属
  • 修改后只影响该用户
  • 建议把所有配置都写入此文件

9.1.2、系统级配置

路径:

1/etc/vimrc
2

特点:

  • 对系统所有用户生效
  • 一般不推荐随意修改

9.1.3、目录结构(可选)

用户的 Vim 配置一般还包括:

1~/.vim/
2    ├── plugin/      # 这里放插件脚本
3    ├── colors/      # 颜色主题
4    ├── autoload/    # 自动加载脚本
5    ├── indent/      # 缩进规则
6    └── syntax/      # 语法高亮脚本
7

9.2、.vimrc 的基本语法规则

VimScript 作为 Vim 的配置语言,语法简单:

注释

1" 这是注释
2

设置选项

1set number
2set relativenumber
3

关闭某选项

1set nonumber
2

布尔值选项

开启:

1set ignorecase
2

关闭:

1set noignorecase
2

赋值选项

1set tabstop=4
2set shiftwidth=4
3set encoding=utf-8
4

9.3、Vim 常用基础配置

以下是一个新手必须掌握的高频配置。每个配置都附带解释。

9.3.1、界面与显示优化

显示行号

1set number
2

相对行号(强烈推荐,用于跳转)

1set relativenumber
2

高亮当前行

1set cursorline
2

括号匹配高亮

1set showmatch
2

开启语法高亮

1syntax on
2

自动换行(不推荐)

1set wrap
2

关闭:

1set nowrap
2

9.3.2、缩进与 Tab 相关配置

设定 Tab 宽度为 4:

1set tabstop=4
2

自动缩进宽度 4:

1set shiftwidth=4
2

将 Tab 转为空格(强烈推荐)

1set expandtab
2

自动缩进

1set autoindent
2set smartindent
3

智能缩进适合 C 系语言。

9.3.3、搜索相关设置

忽略大小写

1set ignorecase
2

智能大小写(如果包含大写字母则大小写敏感)

1set smartcase
2

搜索高亮

1set hlsearch
2

取消高亮:

1:noh
2

9.3.4、编码设置

1set encoding=utf-8
2set fileencodings=utf-8,ucs-bom,gb2312,gbk
3

9.3.5、提升编辑体验

菜单增强

1set wildmenu
2

快速文件补全

1set wildmode=longest:full,full
2

9.3.6、剪贴板互通(与系统剪贴板共享)

Linux 推荐开启:

1set clipboard=unnamedplus
2

9.4、映射(快捷键)设置

映射让 Vim 更像 IDE。

基础映射语法

1nnoremap <快捷键> <命令>
2vnoremap <快捷键> <命令>
3inoremap <快捷键> <命令>
4

nore 防止递归映射(最佳实践)。

示例:快速保存退出

1nnoremap <C-s> :w<CR>
2nnoremap <C-q> :q<CR>
3

示例:快速切换窗口

1nnoremap <leader>h <C-w>h
2nnoremap <leader>l <C-w>l
3

(leader 键下面讲)

9.5、Leader Key(领导键)是什么?

Leader 是一个自定义前缀键,用于自定义快捷键组合。

默认:\
常改为:, 或 空格

1let mapleader=" "
2

之后你可以:

1nnoremap <leader>w :w<CR>
2nnoremap <leader>q :q<CR>
3

9.6、插件管理器(Plugin Manager)简介

Vim 原生支持插件,但手动摆放很麻烦,因此需要插件管理器。

推荐使用:

9.6.1、vim-plug(最流行)

安装:

1curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
2    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
3

.vimrc 配置示例:

1call plug#begin('~/.vim/plugged')
2
3Plug 'preservim/nerdtree'
4Plug 'junegunn/fzf.vim'
5Plug 'vim-airline/vim-airline'
6Plug 'tpope/vim-commentary'
7
8call plug#end()
9

安装插件:

1:PlugInstall
2

9.6.2、Vundle

旧主流,不建议新手使用。

9.6.3、Pathogen

适合手动控制,每个插件一个目录。

9.7、推荐插件(新手到进阶)

文件树插件

1Plug 'preservim/nerdtree'
2

模糊查找(强烈推荐)

1Plug 'junegunn/fzf.vim'
2

状态栏增强

1Plug 'vim-airline/vim-airline'
2Plug 'vim-airline/vim-airline-themes'
3

注释插件

1Plug 'tpope/vim-commentary'
2

语法与代码补全(强大)

1Plug 'neoclide/coc.nvim', {'branch': 'release'}
2

提供类似 VSCode 的智能补全。

9.8、一个结构化优秀 .vimrc 示例(推荐新手使用)

1" ===== 基础设置 =====
2set nocompatible
3syntax on
4set number
5set relativenumber
6set cursorline
7set showmatch
8set encoding=utf-8
9set clipboard=unnamedplus
10
11" ===== 缩进设置 =====
12set tabstop=4
13set shiftwidth=4
14set expandtab
15set autoindent
16set smartindent
17
18" ===== 搜索优化 =====
19set hlsearch
20set ignorecase
21set smartcase
22
23" ===== leader  =====
24let mapleader=" "
25
26" ===== 快捷键 =====
27nnoremap <leader>w :w<CR>
28nnoremap <leader>q :q<CR>
29
30" ===== 插件管理 =====
31call plug#begin('~/.vim/plugged')
32
33Plug 'preservim/nerdtree'
34Plug 'junegunn/fzf.vim'
35Plug 'vim-airline/vim-airline'
36Plug 'tpope/vim-commentary'
37Plug 'neoclide/coc.nvim', {'branch': 'release'}
38
39call plug#end()
40

该配置:

  • 实用但不臃肿
  • 适合新手与开发者
  • 可扩展

9.9、Vim 配置最佳实践

  • 配置从简单开始,不要一上来就复制巨大的 .vimrc
  • 遇到问题再加配置,而不是“预设未来需求”
  • 插件不要越多越好,只要高质量
  • 有计划地组织你的 Vim 环境

9.10、小结

Vim 的强大不只是键位和模式,而是高度可定制化的配置系统。通过掌握 .vimrc、快捷键映射、插件管理、新手友好的配置结构,你已经可以打造一个属于自己的高效编辑环境。

这一章让你从 “会用 Vim” 迈向 “用 Vim 更快、更强”。

10、Vim 插件生态与插件管理器

Vim 的强大不仅来自它的编辑哲学,还来自庞大且高度自由的插件生态。几乎你能想到的功能,都已经有人以插件的方式实现:文件树、代码补全、调试器集成、主题配色、Git 工具、括号补全、模糊搜索……
如果说 .vimrc 决定了你的 Vim 基础体验,那么插件就决定了你的 Vim 是否真正成为 “开发利器”。

本节将从插件机制原理、主流插件管理器、安装及使用方式、插件推荐等方面帮助你全面了解 Vim 插件生态。

10.1、Vim 插件是什么?为什么需要插件?

Vim 插件本质上是一组 Vim 脚本文件(.vim、lua、autoload、syntax 等),通过 Vim 的运行机制被加载,从而改变或扩展默认行为。

插件通常包含以下功能:

  • 编辑体验增强:自动补全、语法高亮、括号补全、智能缩进
  • 跳转提升:模糊搜索、目录树浏览、快速跳转
  • 开发者工具:LSP 支持、Git 集成、调试工具
  • 审美提升:主题配色、状态栏美化
  • 语言支持:Rust、C++、Go、Python 的语法包、工具集成

简单来说:

插件让 Vim 从 “编辑器” 变成 “IDE”。

10.2、Vim 插件的加载机制(重要概念)

Vim 在启动时,会按照特定顺序加载插件:

1~/.vim/plugin/*.vim
2~/.vim/ftplugin/
3~/.vim/autoload/
4~/.vim/colors/
5~/.vim/syntax/
6

其中:

  • plugin/:在启动时自动加载
  • autoload/:按需加载,提高性能(现代插件普遍用这种结构)
  • syntax/:语法支持
  • colors/:主题配色
  • ftplugin/:针对特定文件类型的配置

插件管理器会自动把插件放到这些目录下,而无需你手动整理。

10.3、手动安装插件(不推荐但需理解)

旧时代的方式:

1mkdir -p ~/.vim/plugin
2cp myplugin.vim ~/.vim/plugin/
3

缺点:

  • 难以更新
  • 难以删除
  • 插件版本混乱
  • 需要你手动管理依赖、autoload 等

因此现在几乎不再提倡手动方式。
插件管理器是现代 Vim 使用的核心。

10.4、主流插件管理器对比(非常重要)

10.4.1、Pathogen(元老级)

功能:把每个插件放在单独目录,简化管理
优点:结构简单
缺点:不支持自动更新、不支持依赖管理、不支持按需加载
适合:老项目维护,不推荐新手使用

10.4.2、Vundle(曾经最流行)

特点:

  • 类似 VIM 的 apt-get
  • 支持 :PluginInstall:PluginUpdate
  • 插件使用 Git 管理

缺点:

  • 加载速度慢
  • 不支持懒加载(lazy load)
  • 已多年不更新

不再推荐,进入 “历史阶段”。

10.4.3、vim-plug(目前最流行的 Vim 插件管理器)

使用最广泛的现代管理器。

优点:

  • 支持懒加载(按需加载,加快启动速度)
  • 安装速度非常快(并行下载)
  • 支持 Git/SVN/本地等来源
  • 社区资源丰富
  • 支持插件更新、卸载

安装只需一句命令:

1curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
2    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
3

插件声明放在:

1call plug#begin('~/.vim/plugged')
2Plug 'preservim/nerdtree'
3Plug 'junegunn/fzf.vim'
4call plug#end()
5

然后:

1:PlugInstall
2

建议:

Vim 用户:首选 vim-plug

10.4.4、Lazy.nvim(Neovim 现代管理器)

如果你是 Neovim 用户,则:

  • lazy.nvim 是最佳选择
  • 采用 Lua 编写,性能极高
  • 超强懒加载机制
  • 自动依赖管理
  • Github 社区高度活跃

但你使用的是原版 Vim,本节不展开。

10.5、如何使用 vim-plug 管理插件(完整示例)

安装 vim-plug

1curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
2    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
3

配置示例(非常常用)

1call plug#begin('~/.vim/plugged')
2
3" 文件树
4Plug 'preservim/nerdtree'
5
6" Git 工具
7Plug 'tpope/vim-fugitive'
8
9" 主题
10Plug 'morhetz/gruvbox'
11
12" 状态栏
13Plug 'vim-airline/vim-airline'
14
15" 模糊搜索
16Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
17Plug 'junegunn/fzf.vim'
18
19" 自动补全括号
20Plug 'jiangmiao/auto-pairs'
21
22call plug#end()
23

然后执行:

1:PlugInstall
2

更新插件:

1:PlugUpdate
2

卸载插件:

1:PlugClean
2

10.6、Vim 高频必备插件推荐(新手 → 进阶 → 专业)

以下根据用途整理,你可直接复制到 .vimrc 中使用。

10.6.1、文件管理类插件

NERDTree – 最流行的树状目录

1Plug 'preservim/nerdtree'
2

功能:

  • 左侧显示文件树
  • 快速打开文件
  • 创建/删除/移动 文件树操作

适合所有用户。

10.6.2、代码搜索 / 跳转工具

fzf / fzf.vim – 超强模糊搜索

1Plug 'junegunn/fzf'
2Plug 'junegunn/fzf.vim'
3

支持:

  • 全文件搜索
  • 文件内容搜索
  • Git 文件搜索

性能极高,是现代 Vim 必装插件之一。

10.6.3、Git 集成工具

vim-fugitive – 最强 Git 插件

1Plug 'tpope/vim-fugitive'
2

支持:

  • :Git status、commit、push、pull
  • diff
  • 与 fzf 等配合

如果你使用 Vim 进行开发,必装。

10.6.4、自动补全工具

YouCompleteMe(YCM)— C++ 程序员最爱

大型项目使用频率极高。

(安装过程复杂,需要编译,不在此展开)

10.6.5、语法高亮与 LSP 支持

vim-polyglot – 全语言语法包

1Plug 'sheerun/vim-polyglot'
2

支持 100+ 语言,非常适合新手。

10.6.6、美化类插件

主题:Gruvbox

1Plug 'morhetz/gruvbox'
2colorscheme gruvbox
3

airline(状态栏美化)

1Plug 'vim-airline/vim-airline'
2

让 Vim 更 “现代”。

10.7、如何选择插件?(给新手的建议)

不要贪多。

一个常见错误:

新手安装了 50 个插件,结果 Vim 变慢、快捷键冲突、启动卡顿。

正确方式:

  1. 保持 10–20 个以内
  2. 每个插件解决一个明确问题
  3. .vimrc 中记录“这是干什么的”
  4. 不要装重复功能插件
  5. 学会删除插件(养成简洁习惯)

10.8、插件冲突与性能问题排查技巧

10.8.1、启动慢?

执行:

1vim --startuptime log.txt
2

查看哪个插件耗时明显。

10.8.2、某个功能失效?

尝试:

1vim -u NONE
2

排除所有插件,确认是插件问题还是 Vim 本身问题。

10.8.3、检查插件冲突

关闭一半再测试(折半查找法):

1" 临时注释掉部分 Plug 'xxx' 查看效果
2

10.9、插件管理最佳实践

  • 使用 vim-plug
  • 避免安装过多插件
  • 经常 :PlugUpdate 保持最新
  • 使用懒加载提升启动速度
  • 设置合理的插件目录结构
  • 从必备插件开始构建属于你的 Vim

11、实战:用 Vim 做一次完整编辑任务

理论永远不如实战来得深刻。本节将带你完成一次真实的 Vim 编辑任务,从打开文件、浏览内容、进行修改、搜索替换、分屏编辑、多文件切换到最终保存退出。读完并亲手操作一次后,你将真正体会到 Vim 的强大与高效。

为了让例子更加贴近真实开发,我们假设你需要对一个项目里的两个文件进行修改:

任务目标如下:

  1. 打开 main.c
  2. 快速浏览代码结构
  3. 修改函数名称
  4. 搜索替换内部调用
  5. 使用分屏同时查看 utils.c
  6. 删除多余代码块
  7. 复制另一段代码并粘贴到正确位置
  8. 保存所有修改并退出

只需要 Vim,无需插件。

11.1、第一步:进入项目并打开主文件

在终端中,进入项目目录:

1cd myproject
2

打开 main.c

1vim main.c
2

进入 Vim 后默认处于 Normal 模式

11.2、第二步:快速浏览代码结构(光标移动)

假设你需要找到 process_data() 函数的位置。

你可以使用 Vim 的跳转能力:

快速跳行

1gg     回到文件开头  
2G      跳到文件结尾  
350G    跳到第 50   
4

查找函数名(最常用)

1/process_data
2

n 继续向下查找,N 向上查找。

找到目标函数。

11.3、第三步:修改函数名称(文本编辑)

假设你需要将:

1process_data
2

替换成:

1handle_data
2

在函数定义处,将光标放在单词上,按:

1cwhandle_data<Esc>
2

解读:

  • cw:删除当前单词并进入插入模式
  • 输入新的内容
  • <Esc> 回到 Normal 模式

Vim 的编辑哲学:操作符 + 动作(change + word)。

11.4、第四步:搜索并替换所有调用

修改函数定义只是第一步,所有调用也必须同步更新。

进入命令行模式:

1:%s/process_data/handle_data/g
2

含义:

  • %:全文件
  • s:substitute(替换)
  • g:全行替换所有匹配

执行后,所有调用自动更新。

11.5、第五步:打开第二个文件并分屏

现在你需要查看 utils.c 中的一段逻辑,以确认函数调用关系。

无需退出 Vim,直接输入:

1:vsp utils.c
2

含义:

  • vsp:垂直分屏(vertical split)
  • 分屏后左右各显示一个文件

分屏切换

1Ctrl + w, h    切到左侧
2Ctrl + w, l    切到右侧
3

现在你可以同时查看 main.cutils.c

11.6、第六步:删除 utils.c 中的无用代码块

假设你发现 utils.c 中有一段无用函数,需要删除:

移动光标到函数开头:

1/deprecated_func
2

找到后,删除整个函数:

1d}
2

含义:

  • } 跳转到当前代码块结尾
  • d} 删除直到代码块结尾

非常适合 C/C++/Java/Python 等基于花括号或缩进的语言。

11.7、第七步:复制另一段函数并粘贴到 main.c

假设在 utils.c 中你想把 helper() 函数复制到主文件中。

11.7.1、在 utils.c 里选中整个函数

将光标放在函数首行,按:

1V}y
2

解释:

  • V:进入行可视化模式
  • }:选中到当前代码块末尾
  • y:复制(yank)

函数已在寄存器中。

11.7.2、切回 main.c 的分屏

1Ctrl + w, h
2

11.7.3、移动到目标插入点

假设你要把函数粘贴到文件末尾:

1G
2

11.7.4、粘贴

1p
2

大功告成。

11.8、第八步:保存并退出所有文件

一个命令同时保存所有文件:

1:wa
2

同时退出:

1:qa
2

或者保存并退出:

1:wqa
2

11.9、完整任务流程回顾(超高效率版)

你刚刚完成了一个常见的开发编辑流程:

  1. 打开文件
  2. 快速导航
  3. 修改函数名
  4. 全局搜索替换
  5. 分屏打开第二个文件
  6. 删除无用代码
  7. 复制另一个文件中的函数
  8. 粘贴到主文件
  9. 保存退出

全部过程几乎不需要触摸鼠标,仅用键盘即可完成,这正是 Vim 高效开发的核心价值。

12、Vim 高级技巧(熟练者必看)

当你已经掌握基本移动、编辑、搜索、分屏、可视模式等功能后,就已经超越了大部分 Vim 初学者。但 Vim 的深度远不止于此:宏、寄存器、折叠、缓冲区、标记、跳转列表、文本对象、批量替换……这些高级技巧能让你从 “熟练使用” 提升到 “极致高效”。

本章将带你全面掌握 Vim 的核心高级功能,帮助你实现真正意义上的 “键盘即生产力”。

12.1、宏(Macro):让重复操作一键完成

宏是 Vim 中最强大的自动化能力之一。它能记录你的操作并反复执行,非常适合批量插入、格式化、修改重复结构等任务。

12.1.1、录制宏

1qa
2

含义:

  • q:开始录制
  • a:录制到寄存器 a

录制过程中,你做的每一个操作都会被记录。

录制完成后,按:

1q
2

结束录制。

12.1.2、执行宏

1@a
2

表示执行寄存器 a 中的宏。

反复执行:

1@@
2

执行上一次的宏。

12.1.3、执行 n 次宏

如 10 次:

110@a
2

12.1.4、宏应用示例:批量添加分号

假设每行末尾缺少 ;

1qaA;<Esc>j q
2

逐行运行:

1@a
2

非常适合大规模重复编辑。

12.2、寄存器(Registers):剪贴板的超能力

Vim 的寄存器是一个“多剪贴板系统”。

输入:

1:registers
2

查看所有寄存器。

12.2.1、寄存器分类

寄存器功能
""默认寄存器,所有删除与复制会写入
"0复制寄存器,不被删除操作覆盖
"1~"9删除历史(类似回收站)
"a~"z自定义寄存器,可读写
"*系统剪贴板(在支持 GUI 或编译时启用 clipboard 时)
"+系统剪贴板
"/搜索寄存器
"%当前文件名
":最近的命令
".最近插入的文本

12.2.2、指定寄存器复制粘贴

复制到 a 寄存器:

1"ay
2

从 a 寄存器粘贴:

1"ap
2

12.2.3、从系统剪贴板复制/粘贴

复制到系统剪贴板:

1"+y
2

从系统剪贴板粘贴:

1"+p
2

非常适合和浏览器、编辑器交互。

12.3、折叠(Folding):隐藏不重要代码,提高阅读效率

Vim 支持以多种方式折叠函数、类、注释块。

12.3.1、打开折叠功能

1:set foldmethod=indent
2

或按语法折叠:

1:set foldmethod=syntax
2

12.3.2、折叠操作

命令功能
zc折叠当前代码块
zo打开当前折叠
za折叠/展开切换
zM折叠所有
zR展开所有

折叠对于大型 C/C++/Python 项目非常有用。

12.4、缓冲区(Buffer):多文件编辑的核心

缓冲区是 Vim 内存中的已打开文件列表。

查看所有缓冲区:

1:ls
2

12.4.1、切换缓冲区

1:bn   下一个
2:bp   上一个
3:b 3  跳到编号 3
4

12.4.2、删除(关闭)缓冲区

1:bd
2

不会关闭窗口,只会关闭文件。

12.4.3、常用操作模式:用缓冲区管理多文件

例如你打开 5 个文件,不必分屏,只需:

1:b next
2:b previous
3

快速跳转,即便是 20+ 文件也很轻松。

12.5、标记(Marks)与跳转(Jumps):文件内外快速定位

12.5.1、设置标记

在某行按:

1ma
2

设置一个名为 a 的标记。

12.5.2、跳转到标记

1`a
2

跳转到标记的精确位置
(反引号)

1'a
2

跳转到标记所在行
(单引号)

12.5.3、文件间跳转(非常实用)

继续写代码时:

1Ctrl + o    回到上一次位置(后退)
2Ctrl + i    向前跳
3

类似浏览器的前进后退,非常高效。

12.6、文本对象(Text Object):Vim 编辑效率的灵魂

文本对象允许 “语义化操作”,例如删除括号内所有内容、修改引号内字符串。

常用文本对象:

对象描述
iw单词内部
aw一个单词(含空格)
i"引号内
i'单引号内
i( / a(圆括号
i[ / a[方括号
i{ / a{花括号
ip段落
it标签内(HTML/XML)

示例:删除括号内内容

1di(
2

修改括号内内容:

1ci(
2

这是 Vim 最有逻辑美的部分。

12.7、替换的高级用法:使用正则表达式

Vim 支持强大的正则。

例如给每行末尾加 semicolon:

1:%s/$/;/g
2

批量将 tab 换成 4 空格:

1:%s/\t/    /g
2

删除空行:

1:g/^$/d
2

12.8、高效输入技巧:点命令、重复次数、组合键

12.8.1、点命令(.)

. 表示重复上一个修改操作。

例如:

1x
2

删除一个字符,然后按:

1.
2

会连续删除下一个字符。

12.8.2、数字前缀

110j
2

向下 10 行

15dw
2

删除 5 个单词

120i*<Esc>
2

插入 20 个星号

12.8.3、操作符组合技巧

删除从当前位置到下一个 foo

1d/foo<Enter>
2

非常强大。

12.9、综合示例:30 秒完成复杂编辑

任务:将括号内所有数字替换成 0,并删除多余空行。

1:%s/(\d\+)/\(0\)/g
2:g/^$/d
3

如果需要重复任务:

录制一个宏即可。

12.10、小结

本章介绍了 Vim 的核心高级功能:

  • 宏:处理重复操作的神器
  • 寄存器:多剪贴板系统
  • 折叠:简化大文件阅读
  • 缓冲区:多文件管理核心
  • 标记与跳转:文件内外自由移动
  • 文本对象:最强编辑方式
  • 正则替换:批量处理文本
  • 点命令、数值前缀:极致效率

掌握这些技巧后,你已经进入 Vim 用户中的“熟练者”甚至“高手”行列。

13、“Vim 难学点” 与新手常见坑总结

尽管 Vim 是一个高效、强大的编辑器,但对于初学者而言,它的学习曲线确实陡峭。很多人第一次启动 Vim,就直接 “被困住”,甚至连退出都不会。为了帮助你顺利跨过这条 “痛苦期曲线”,本章将系统总结 Vim 的难学点与最常见的新手坑,并给出易懂的解释与解决方案。

13.1、为什么 Vim 给人 “难” 的第一印象?

Vim 的理念与主流编辑器截然不同:

  • 它不是 “所见即所得” 的编辑器,而是 “模式化编辑” 工具。
  • 它假设用户不依赖鼠标,全部操作依靠键盘。
  • 它不追求功能显眼,而追求效率最大化。

因此,新手第一次接触到 Vim 会遇到典型问题:

  • 不能直接输入文字
  • 想退出却不知道怎么退
  • 命令太多、记不住
  • 配置文件让人头大
  • 操作方式与常规编辑器相反

但当你熬过 “黑暗森林期”,你会发现 Vim 的设计极其优雅,效率惊人。

13.2、新手最常见的坑与解决方案

以下是使用 Vim 过程中,初学者最容易掉进的坑(真人经验总结):

坑 1:进 Vim 之后发现 “我为什么不能打字?”

原因

Vim 默认进入 普通模式(Normal mode),不能直接输入文字。

解决办法

记住 Vim 的 “金三角模式”:

模式用途进入方式
Normal主要做编辑操作、移动光标按 ESC
Insert输入文本按 i / a / o
Visual选择文本按 v / V / Ctrl+v

👉 只要按 ESC 就能回到 Normal 模式。

坑 2:“怎么退出啊?!”(Vim 最大名场面)

最著名的新手问题。

解决办法(必须记住)

目的命令
保存并退出:wq
不保存退出:q!
保存但不退出:w
强制退出所有窗口:qa!

一定要从 Normal 模式开始输入命令:

  1. ESC
  2. :
  3. 输入退出命令

坑 3:搞不清模式切换,越用越混乱

新手常常:

  • 在 Insert 模式狂按 h j k l
  • 在 Normal 模式死按退格键
  • 在 Visual 模式不小心删除选区

解决方案:建立模式意识

用一句话记住:

Normal:动词模式 Insert:写字模式 Visual:选择模式 命令行(:):功能模式

每天使用 Vim 都要在心里默念这句话,直到成自然反应为止。

坑 4:不知道如何高效移动光标,用方向键慢慢挪

方向键可以用,但效率极低。

解决方案:记住最基础的 hjkl

按键方向
h
j
k
l

然后逐渐进阶到词/行级移动:

  • w:下一个单词开头
  • b:上一个单词开头
  • 0:行首
  • $:行尾
  • gg:文件开头
  • G:文件结尾

如果你总是想按方向键,建议强制自己练习:

👉 把方向键映射成无效键(在 .vimrc 中加入)

1nnoremap <Up> <NOP>
2nnoremap <Down> <NOP>
3nnoremap <Left> <NOP>
4nnoremap <Right> <NOP>
5

坑 5:删除、修改命令太多,分不清 “d”、“c”、“y”

最核心记忆法

d(delete)删除并复制
c(change)删除并进入 Insert 模式
y(yank)复制

只要知道这三个是“操作”,而 “移动命令” 可以作为 “对象”,你就理解了:

例如:

命令含义
dw删除到单词末尾
cw修改到单词末尾
y$复制到行尾
dd删除整行
cc修改整行

Vim 的命令组合很有规律,你要学的是“语法结构”,不是死记命令。

坑 6:搜索后高亮不消失,看得眼睛难受

搜索 /xxx?xxx 后, Vim 会保持高亮。

解决办法

临时取消:

1:noh
2

也可以映射快捷键(例如 <leader>h):

1nnoremap <leader>h :nohlsearch<CR>
2

坑 7:Visual Mode(可视模式)不知怎么退出,常常误删内容

Visual 模式看似简单,但容易误操作,因为按 d 就会删掉选区。

退出可视模式的方法

最简单:

1ESC
2

记住:ESC 是万物归一的出口。

坑 8:分屏之后不知道怎么切换窗口、关闭窗口

新手常常会:

  • 切不了分屏
  • 误删不该删除的窗口
  • 找不到当前焦点在哪

记住窗口操作四件事

  1. 创建窗口
1:sp    # 水平 split
2:vsp   # 垂直 split
3
  1. 切换窗口
1Ctrl + w + h/j/k/l
2
  1. 关闭窗口
1:q
2
  1. 调整窗口大小
1Ctrl + w + <
2Ctrl + w + >
3Ctrl + w + =
4

坑 9:插件太多,Vim 变卡或冲突不断

常见错误:

  • 第一天装十几个插件
  • 装了相同功能的插件冲突
  • 装了插件却不会配置

建议

  • 初学者插件 不超过 3 个
    • vim-plug(插件管理器)
    • nerdtree(文件树)
    • vim-airline(状态栏优化)
  • 学会后再逐步增加,比如:
    • fzf.vim(模糊搜索)
    • coc.nvim(强大 IDE 功能)

记住:插件是提高生产力的,不是用来堆砌的。

坑 10:害怕使用 Normal 命令,只用 Insert 模式当普通编辑器

这是最大损失。

解决方案

逐步打破舒适区,建议学习路线:

  1. 熟练 Insert → Normal 切换(最关键)
  2. 学习单词级移动
  3. 学习基础删除/复制/修改命令
  4. 练习文本对象(iw, ip, i( 等)

Normal 模式是 Vim 的灵魂,越早熟悉,收益越大。

13.3、Vim 的 “难点” 其实都有规律

Vim 之所以难,是因为:

  • 模式多
  • 操作命令多
  • 输入方式与主流编辑器完全不同

但一旦理解其规则性,你会发现 Vim 的设计极其一致:

13.3.1、所有命令都有语法结构

1操作 动作
2

例如:

  • d + w:删除一个词
  • y + $:复制到行尾
  • c + 2w:修改两个词
  • v + movement:可视化选择一段文本

13.3.2、文本对象极其统一

1iX  内部
2aX  包含
3

例如:

文本对象区域
iw当前单词内容
aw当前单词 + 空格
i"引号内内容
a"引号 + 内容
ip当前段落
i(括号内

只要记住 ia,整个世界都打开了。

13.3.3、所有问题的逃生方式都是 ESC

  • 模式不明 → ESC
  • 选择错了 → ESC
  • 想中断命令 → ESC

13.4、如何安全、系统地学习 Vim?(学习路线建议)

为避免陷入模式混乱或命令爆炸,建议采用如下学习路径:

阶段 1:熟悉三种模式

  • Normal
  • Insert
  • Visual

每天练习模式切换与基本移动。

阶段 2:掌握高频操作命令

  • 删除:d
  • 修改:c
  • 复制:y
  • 粘贴:p
  • 回退:u
  • 快速移动:w, b, $, 0, gg

阶段 3:学习文本对象

  • iw, aw, i(, i", ip

这是 Vim 真正的威力所在。

阶段 4:掌握搜索与替换

阶段 5:分屏、多文件协作

  • :vsp
  • Ctrl+w+h/j/k/l

阶段 6:开始写自己的 .vimrc

从简单开始,不要一口气写几十行。

阶段 7:逐步使用插件

只关注你真正需要提升的点。

13.5、小结

本章系统总结了 Vim 新手最常遇到的难点,包括:

  • 模式切换理解困难
  • 无法退出 Vim
  • 命令体系看起来复杂
  • 分屏文件编辑不熟练
  • 插件选择困难
  • 文本对象、Normal 模式理解不深

同时也给出了常见坑的最佳解决方法、学习路线与记忆技巧。

Vim 的本质不是难,而是与普通编辑器的理念完全不同。 一旦掌握模式化编辑思想,你就能真正体会 Vim 的高效与优雅。

14、高级阅读与扩展学习

当你完成本指南并能够熟练使用 Vim 进行日常编辑后,你就已经跨过了 “入门门槛”。但 Vim 的世界远不止于此。作为一个拥有 40 多年历史、无数高手贡献的文本编辑器,它的功能体系深如海洋。为了继续扩展你的编辑能力,本章将系统介绍 Vim 的进阶学习路径、经典资料、插件生态方向、提升效率的最佳实践,以及最终迈向 Vim 高手所应掌握的核心思想。

这一章节不仅适合继续钻研 Vim,也适用于未来学习 Neovim —— Vim 的进化版。

14.1、Vim 官方文档与内置帮助系统(最高质量资料)

Vim 最权威、最全面的资料就是它的内置帮助系统。

你可能没有意识到:

Vim 的帮助文档质量极高,甚至高于大部分教程书籍。

你随时可以在 Vim 中输入:

1:help
2

推荐几个最重要的帮助入口:

内容命令
Vim 入门(官方教程):help user-manual
基础键位列表:help quickref
正则表达式:help regex
命令行模式:help cmdline
插件编写:help write-plugin
Vim 脚本语言:help eval
自动命令:help autocmd
映射键位(map):help map

建议你每天花 5 分钟读一点 help,长期积累会带来巨大收益。

14.2、官方教程:vimtutor(最适合新手的互动教程)

如果你还没有运行过 vimtutor,那你一定要试一次。

命令:

1vimtutor
2

特点:

  • 交互式教学
  • 每一节都有操作练习
  • 只需 20-30 分钟
  • 是 Vim 官方为初学者设计的唯一教程

即使你已经会用 Vim,重新做一遍也有帮助。

14.3、推荐阅读书籍(体系化进阶)

以下书籍被视为 Vim 学习领域的“四大经典”:

14.3.1、Practical Vim(Vim 实用技巧)

作者:Drew Neil

特点:

  • 强调高效编辑思想
  • 每条技巧独立成章
  • 非常适合从中级 → 高级的跃迁

这是许多 Vim 高手的必读书。

14.3.2、Learning Vimscript the Hard Way

网址:
https://learnvimscriptthehardway.stevelosh.com/

特点:

  • 经典 Vim 脚本语言入门书
  • 适合想编写插件或自定义脚本的用户

看完这本,你已经能写自己的插件了。

14.3.3、Modern Vim(深度讲解 Vim 现代化用法)

偏向 Neovim 生态,但大量内容通用。

包含:

  • 新的插件管理方式
  • 异步能力
  • LSP 集成思想

适合未来计划迁移到 Neovim 的用户。

14.3.4、Vim 力量(Vim Power)

一本更贴近中文读者的系统化教程,适合作为长期阅读参考。

14.4、深入 Vim 核心:Vimscript、映射、自动化

当你掌握基础操作后,建议进入 Vim 的 “可编程性” 世界。

14.4.1、学习 Vimscript(Vim 专用脚本语言)

Vimscript 是 Vim 的灵魂,它允许你:

  • 编写自动化命令
  • 创建自定义函数
  • 开发插件
  • 修改编辑行为
  • 增强高效操作

入门入口:

1:help user-functions
2:help eval
3:help write-plugin
4

进阶目标:

  • 用 Vimscript 写一个自定义命令
  • 给自己开发一个小插件
  • 使用 autocommand 自动完成任务

14.4.2、熟练使用映射(map)提高效率

映射的目标是 把一串长命令变成一个按键

例如:

1nnoremap <leader>w :w<CR>
2

学习映射必须掌握:

  • nnoremap
  • inoremap
  • vnoremap
  • <leader> 键(默认 \

映射本质是构建你自己的键盘体系。

14.4.3、学会自动命令(autocmd)

自动命令可以让 Vim 在事件发生时自动执行某些操作。

例如:

1autocmd BufWritePost *.c :!gcc %
2

或:

自动格式化:

1autocmd BufWritePre * :%s/\s\+$//e
2

当你开始使用 autocommand,你的 Vim 就开始真正“自动化”。

14.5 、插件生态的专业级探索

初学者不需要太多插件,但进一步学习插件体系能极大提高效率。

14.5.1、Neovim:现代 Vim 的未来方向

Neovim 是 Vim 的分支,提供:

  • 原生支持异步
  • 原生 LSP(Language Server Protocol)
  • 更现代的插件生态
  • Lua 配置(更强大、更快)

如果你未来要做 C++/Python/Go 开发,Neovim + LSP 是最强组合。

14.5.2、高级插件推荐(中高级必备)

下面是中高级用户常装的插件方向:

(1)导航与搜索

  • fzf.vim
  • telescope.nvim(Neovim 用户)

(2)LSP 与 IDE 功能

  • coc.nvim
  • nvim-lspconfig(Neovim 原生 LSP)
  • nvim-cmp(自动补全框架)

(3)语法高亮与代码解析

  • treesitter(Neovim 专属)

树状解析器让语法高亮、选择文本更加智能。

(4)Git 集成

  • vim-fugitive(被称为 “Vim 中的 Git 神器”)

(5)增强编辑功能

  • surround.vim:增删/修改括号、引号神器
  • commentary.vim:快速注释
  • repeat.vim:让 . 命令更强大

14.5.3、深入学习插件编写

学习插件编写需要掌握:

  • Vimscript(或 Lua)
  • Vim 运行时结构
  • autoload 机制
  • 映射体系
  • 文本对象扩展

如果未来你想做 Vim 插件开发,可以挑战:

写一个自己的 Text Object 插件
例如为 Markdown 创建:

1aih   # a heading
2iih   # inner heading text
3

这是 Vim 高手的终极路线之一。

14.6、终极技巧:掌握 “Vim 思维”

无论你使用多少插件、读了多少教程,真正决定你 Vim 水平的是你的 编辑思维是否模式化与结构化

所谓“Vim 思维”包括:

14.6.1、命令是组合的,不是记忆的

1操作 + 文本对象  
2操作 + 移动  
3数字 + 命令
4

掌握这种思维后,你不用记“dw”“d$”“ci(”,你只要理解 “语法”。

14.6.2、永远优先使用 Normal 操作,而不是 Insert 模式中狂按方向键

绝大多数新手停在 “把 Vim 当记事本” 的阶段,是因为只会用 Insert 模式。

14.6.3、用最小按键实现最大功能

熟练之后你会开始审视自己的按键路径,并不断优化:

  • 映射
  • 自动命令
  • 插件
  • 文本对象
  • 缩短命令链

Vim 是一个 持续优化自己的过程

14.7、扩展阅读资源(精选高质量链接)

以下资源质量很高,值得长期关注:

官方

  • Vim 官网
  • 《Vim User Manual》
  • 《Vim reference manual》(非常全面)

社区教程

插件生态

  • Awesome Neovim(精选 Neovim 插件列表)
  • VimAwesome(插件索引网站)

14.8、小结

本章提供了 Vim 的 全维度进阶学习路线
从官方文档、书籍,到脚本语言、插件生态,再到现代 Neovim 技术栈,内容完整而深入。

最终目标是帮助你:

  • 超越 “会用 Vim”
  • 成为能自主配置、自主优化
  • 甚至能写插件的高级用户

当你进入这些领域,你会发现 Vim 是一个巨大的世界,它不仅仅是一个编辑器,更是一套思维方式、一种效率哲学。


《 Linux 修炼全景指南: 七 》 指尖下的利刃:深入理解 Vim 的高效世界》 是转载文章,点击查看原文


相关推荐


首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 XYZ博客

Powered by 聚合阅读