第4章 Vim编辑器:三种模式、基本操作、配置与插件管理

说实话,Vim 这玩意儿,刚接触的时候真想砸键盘。

我记得第一次在服务器上编辑配置文件,光标不动,打不出字,按啥都没反应。旁边老工程师瞥了一眼:「你按 i 啊。」——从此我记住了 Vim 的「模式」这个概念。

但等你用顺了,你会发现 Vim 是真的快。手不离主键盘,鼠标?不需要。我现在的开发环境,IDE 都配了 Vim 插件。说白了,Vim 不是编辑器,是一种思维方式。

4.1 Vim 的三种核心模式

Vim 和普通编辑器的最大区别,就是它有「模式」。你想想看,普通编辑器你按键盘就是打字,但 Vim 里,按键在不同模式下干不同的事。

模式 作用 进入方式
普通模式(Normal) 移动光标、复制粘贴、删除、撤销 启动 Vim 默认进入,按 Esc 返回
插入模式(Insert) 输入文本内容 按 i、a、o 等
命令行模式(Command-line) 保存退出、搜索替换、设置选项 按 :、/、?

核心口诀:普通模式是「家」,插入模式是「干活」,命令行模式是「发号施令」。

4.2 基本操作:从打开文件到保存退出

我刚开始带新人时,发现很多人连退出 Vim 都不会。网上有个段子:「如何退出 Vim?」——答案是关终端。哈哈,其实没那么夸张。

4.2.1 打开与退出

vim filename        # 打开文件
:q                  # 退出(未修改时)
:q!                 # 强制退出,不保存
:w                  # 保存
:wq                 # 保存并退出
:x                  # 同 :wq,但更简洁

我曾经在线上服务器改 nginx 配置,改完直接 :q 退出了,没保存。结果 reload 时报错,排查了半天才发现是文件没改上。从那以后我养成了习惯:改完先 :w,再检查一遍,最后 :q。

4.2.2 光标移动

普通模式下,移动光标不用方向键。为什么?因为手不用离开主键盘区,效率高得多。

  • h / j / k / l — 左 / 下 / 上 / 右
  • w / b — 按单词前进 / 后退
  • 0 / $ — 行首 / 行尾
  • gg / G — 文件开头 / 结尾
  • Ctrl+f / Ctrl+b — 翻页

小技巧:数字 + 命令 = 重复执行。比如 5j 就是向下移动 5 行。我写代码时经常用 10k 快速回到上面某个函数。

4.2.3 编辑操作

操作 命令 说明
插入 i / a / o 光标前 / 后 / 新行插入
删除 x / dd / dw 删字符 / 删行 / 删单词
复制 yy / yw 复制行 / 复制单词
粘贴 p / P 光标后 / 前粘贴
撤销 u 撤销上一步操作
重做 Ctrl+r 恢复撤销

我个人习惯是:dd 删行,yy 复制,p 粘贴。这三个命令组合起来,重构代码特别快。你想想看,不用鼠标,不用选中,几秒钟就能把一段代码挪到别处。

4.3 Vim 配置:打造你的专属编辑器

Vim 默认配置其实挺素的。但你可以通过 ~/.vimrc 文件来定制。我每换一台新机器,第一件事就是把我的 .vimrc 拷过去。

4.3.1 基础配置示例

" 显示行号
set number

" 语法高亮
syntax on

" 自动缩进
set autoindent
set smartindent

" 制表符宽度
set tabstop=4
set shiftwidth=4
set expandtab

" 搜索高亮
set hlsearch
set incsearch

" 显示匹配括号
set showmatch

" 编码设置
set encoding=utf-8

避坑指南:我曾经在 .vimrc 里写错了配置,导致 Vim 启动报错。排查方法是:用 vim -u NONE 启动纯净模式,然后逐行加载配置。嗯,这个技巧救过我很多次。

4.3.2 常用配置项速查

配置项 作用
set number 显示行号
set relativenumber 相对行号(配合 5j 这类命令超好用)
set cursorline 高亮当前行
set ignorecase 搜索忽略大小写
set smartcase 智能大小写(混合输入时精确匹配)

4.4 插件管理:让 Vim 脱胎换骨

Vim 本身是个编辑器,但加上插件,它就能变成 IDE。我建议用 vim-plug 来管理插件,轻量、简单、够用。

4.4.1 安装 vim-plug

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

4.4.2 配置插件

在 .vimrc 中添加:

call plug#begin('~/.vim/plugged')

" 文件树
Plug 'preservim/nerdtree'

" 状态栏美化
Plug 'vim-airline/vim-airline'

" 代码补全
Plug 'ycm-core/YouCompleteMe'

" Git 集成
Plug 'tpope/vim-fugitive'

" 注释插件
Plug 'preservim/nerdcommenter'

call plug#end()

然后执行 :PlugInstall,Vim 会自动下载并安装所有插件。

我个人习惯:插件不要装太多。装多了启动慢,还容易冲突。我一般只装 5-8 个核心插件,够用就行。你想想看,插件是工具,不是玩具。

4.4.3 常用插件推荐

插件 功能
NERDTree 文件浏览器,左侧目录树
vim-airline 底部状态栏,显示模式、文件名、行号
YouCompleteMe 代码补全,支持 C/C++/Python 等
vim-fugitive Git 集成,:Gstatus 查看状态
nerdcommenter 快速注释/取消注释,gc 快捷键

4.5 本章知识体系

下面这张图,是我自己总结的 Vim 学习路径。你照着这个顺序学,不会乱。

Vim 编辑器知识体系 Vim 编辑器 普通模式 (Normal) 插入模式 (Insert) 命令行模式 (Cmd) 移动:h j k l w b gg G 编辑:dd yy p u Ctrl+r 进入:i a o I A O 退出:Esc 保存::w :wq :x 搜索:/pattern ?pattern 配置 ~/.vimrc + 插件管理 vim-plug

这张图把 Vim 的核心脉络理清了。你从普通模式开始学,掌握移动和编辑,然后学会进入插入模式写内容,最后用命令行模式保存退出。配置和插件是进阶内容,等你用熟了再折腾。

最后说一句:Vim 的学习曲线确实陡,但一旦跨过那个坎,你会发现它是最顺手的编辑器。我用了十年 Vim,到现在每天还在学新技巧。别急,慢慢来。

可可精品资料库