这份指南旨在帮你从零基础到熟练使用 Vim,涵盖核心思想、常用操作、进阶技巧以及个性化配置。Vim 的学习曲线较陡,但掌握后能极大提升文本编辑效率。
第一章:核心思想与模式
Vim 的设计哲学是通过组合命令来高效编辑,而非一直处于“插入”状态。它最核心的概念是模式。
普通模式 (Normal Mode):Vim 的“待机”状态,用于导航、复制、删除等操作。按 Esc 可返回此模式。
插入模式 (Insert Mode):用于实际输入文本。按 i 进入(在光标前插入),按 a 进入(在光标后插入),按 o 进入(在下一行插入)。
可视模式 (Visual Mode):用于选中文本块。按 v 进入字符可视模式,按 V 进入行可视模式,按 Ctrl+v 进入块可视模式。
命令模式 (Command Mode):用于执行保存、退出、查找替换等命令。在普通模式下按 : 进入。
核心法则:在普通模式下,通过按键组合来“操作”文本,尽量缩短在插入模式中的时间。
第二章:启动、保存与退出
打开文件:vim filename
保存::w
退出:
:q (未修改时退出)
:q! (强制退出,不保存修改)
:wq 或 :x (保存并退出)
ZZ (普通模式下,保存并退出,相当于 :wq)
第三章:高效移动(普通模式)
高效移动是 Vim 的精髓。目标是让手指不离开键盘主行区。
1. 基本移动
h j k l:左、下、上、右(强烈建议习惯使用,避免方向键)
w:移动到下一个单词开头
b:移动到上一个单词开头
e:移动到单词末尾
0:移动到行首
^:移动到行首第一个非空字符
$:移动到行尾
2. 页面与文档移动
gg:移动到文件开头
G:移动到文件末尾
H:移动到屏幕顶部
M:移动到屏幕中央
L:移动到屏幕底部
Ctrl + f:向下翻页(forward)
Ctrl + b:向上翻页(backward)
Ctrl + d:向下翻半页(down)
Ctrl + u:向上翻半页(up)
3. 搜索定位
/pattern:向下搜索 pattern
?pattern:向上搜索 pattern
n:重复上一次搜索,同方向
N:重复上一次搜索,反方向
*:向下搜索光标下的单词
#:向上搜索光标下的单词
4. 精准跳转
{:跳转到上一个空行(通常用于段落跳转)
}:跳转到下一个空行
%:在匹配的括号 ()、{}、[] 之间跳转
第四章:编辑操作(普通模式)
Vim 的编辑操作遵循 操作符 + 动作 的语法,例如 d(删除)+ w(单词)= dw(删除一个单词)。
1. 删除、复制与粘贴
删除:
x:删除光标后的字符
dd:删除当前行
dw:删除光标到单词末尾(包括空格)
d$ 或 D:删除光标到行尾
d0:删除光标到行首
复制:
yy:复制当前行
yw:复制光标到单词末尾
y$:复制光标到行尾
粘贴:
p:在光标后粘贴
P:在光标前粘贴
2. 修改与替换
r:替换光标下的单个字符(无需进入插入模式)
R:进入替换模式(覆盖式输入)
cc:删除当前行并进入插入模式(相当于 dd + i)
cw:删除光标到单词末尾并进入插入模式
c$ 或 C:删除光标到行尾并进入插入模式
~:切换大小写
3. 撤销与重做
u:撤销
Ctrl + r:重做
.:重复上一次修改(这是 Vim 最强大的命令之一)
4. 可视化模式下的操作
选中文本后,按 d 删除,按 y 复制,按 I 在块前插入,按 A 在块后插入。
第五章:搜索与替换(命令模式)
这是 Vim 中非常高效的文本处理功能,语法为::[范围]s/查找/替换/选项
替换当前行第一个匹配::s/old/new/
替换当前行所有匹配::s/old/new/g
替换整个文件::%s/old/new/g
替换并确认::%s/old/new/gc(c 表示 confirm,会有提示)
指定行范围::10,20s/old/new/g (替换第10到20行)
使用正则表达式:
:%s/\<old\>/new/g (\< 和 \> 表示单词边界,避免替换含 old 的其他单词)
第六章:多文件与窗口管理
1. 分屏操作
:sp filename:水平分屏(split)
:vsp filename:垂直分屏(vertical split)
Ctrl + w + w:在窗口间循环切换
Ctrl + w + h/j/k/l:切换到指定方向的窗口
Ctrl + w + =:使所有窗口等高/等宽
Ctrl + w + q:关闭当前窗口
2. 标签页
:tabnew filename:在新标签页打开
gt:下一个标签页
gT:上一个标签页
3. 缓冲区管理
打开多个文件时(如 vim a.txt b.txt),每个文件是一个缓冲区。
:ls 或 :buffers:列出所有缓冲区
:b n:切换到编号为 n 的缓冲区
:bd:删除(关闭)当前缓冲区
第七章:进阶技巧
1. 宏录制
宏可以记录一系列操作并重复执行。
开始录制:q + 寄存器名(如 q a,表示录制到寄存器 a)
执行操作:进行一系列编辑
停止录制:再次按 q
回放宏:@a(执行寄存器 a 的宏)
重复多次:100@a(执行宏100次)
2. 外部命令
可以在不退出 Vim 的情况下执行 shell 命令。
:!command:执行外部命令,如 :!ls
:r !command:将命令输出读取到当前光标处,如 :r !date
:w !command:将当前缓冲区内容作为命令的标准输入
3. 自动补全
在插入模式下:
Ctrl + n 或 Ctrl + p:根据当前文件中的单词进行补全
Ctrl + x + Ctrl + f:补全文件名
Ctrl + x + Ctrl + l:补全整行
第八章:个性化配置(.vimrc)
Vim 的配置位于用户目录下的 .vimrc 文件。一个基础的配置示例:
" 基础设置
set number " 显示行号
set relativenumber " 显示相对行号(便于快速跳转)
set syntax=on " 语法高亮
set autoindent " 自动缩进
set expandtab " 将 Tab 替换为空格
set tabstop=4 " Tab 宽度为4
set shiftwidth=4 " 缩进宽度为4
set ignorecase " 搜索时忽略大小写
set smartcase " 如果搜索包含大写,则启用大小写敏感
set hlsearch " 高亮搜索结果
set incsearch " 边输入边搜索
set cursorline " 高亮当前行
set showmode " 显示当前模式
set showcmd " 在底部显示部分命令
set encoding=utf-8 " 设置编码
" 映射快捷键
let mapleader = "," " 定义 <leader> 键为逗号
" 快速保存与退出
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>x :x<CR>
" 让 j k 在长行(换行显示的行)中按视觉行移动
nnoremap j gj
nnoremap k gk
" 让分屏切换更自然
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l第九章:插件管理
Vim 的功能可以通过插件大幅扩展。现代 Vim(8.0+)内置了包管理器,但更推荐使用第三方插件管理器:
vim-plug(推荐):轻量、并行安装。
安装:将 vim-plug 脚本放入 ~/.vim/autoload/plug.vim。
call plug#begin('~/.vim/plugged') " 在这里添加插件 Plug 'preservim/nerdtree' " 文件树 Plug 'vim-airline/vim-airline' " 状态栏美化 Plug 'sheerun/vim-polyglot' " 语法高亮增强 Plug 'neoclide/coc.nvim', {'branch': 'release'} " 代码补全(LSP) call plug#end()安装插件:打开 Vim,运行 :PlugInstall。
第十章:学习建议与常用命令速查
学习路线建议
第1-2天:强制自己使用 h/j/k/l 移动,学会 i、Esc、:wq。
第1周:熟悉 dd、yy、p、u 和 . 命令,彻底告别鼠标。
第2周:学习 dw、cw、ciw(change inner word)等组合命令,掌握 / 搜索。
第1个月:学习宏录制、分屏操作,开始定制 .vimrc,引入插件。
长期:运行 vimtutor 命令(终端内运行)进行系统练习。
常用命令速查表
Vim 不是一款能“速成”的编辑器,它的价值在于将编辑思维转化为肌肉记忆。当手指不再需要思考“按哪个键”时,你就能真正体验到它与文本融为一体的流畅感。