Vim

Vim 编辑器完整教程与命令速查表

#type / howto #tech / dev #status / growing #resource / vim #media / tool

[!info] related notes

Vim 编辑器

高效的文本编辑器,掌握 Vim 能大幅提升编码效率


核心概念

三大模式

  • 普通模式 (Normal Mode):导航与命令执行,Esc 进入
  • 插入模式 (Insert Mode):文本编辑,按 iao 等进入
  • 命令模式 (Command Mode):执行高级命令,按 : 进入

模式切换流图

插入模式 --[Esc]--> 普通模式 --[:]--> 命令模式
                        |
                    [i/a/o 等]
                        |
                      插入模式

命令速查表

按用途分类,支持 Obsidian 片段链接:[[vim#^basic-move]]

删除全部

ggdG

光标移动 ^basic-move

命令说明
h左移一字符
j下移一行
k上移一行
l右移一字符
w前进一个单词
W前进一个单词(忽略标点)
b后退一个单词
B后退一个单词(忽略标点)
0行首
$行尾
^行首非空字符
gg文件开头
G文件末尾
:{N}跳转到第 N 行
Ctrl+U上翻半页
Ctrl+D下翻半页
Ctrl+F前翻一页
Ctrl+B后翻一页
f{char}查找行内下一个指定字符
F{char}查找行内上一个指定字符
t{char}光标移至字符前
T{char}光标移至字符后
;重复最后一次 f/t 命令
,反向重复最后一次 f/t 命令

查找与替换 ^search-replace

命令说明
/{pattern}向下查找
?{pattern}向上查找
n下一个匹配
N上一个匹配
:s/old/new/当前行替换(仅首次)
:s/old/new/g当前行全部替换
:%s/old/new/g全文替换
:%s/old/new/gc全文替换(确认每次)
:set ic不区分大小写查找
:set noic区分大小写

编辑操作 ^edit-ops

命令说明
i光标前插入
I行首插入
a光标后插入
A行尾插入
o下一行插入
O上一行插入
x删除光标处字符
X删除光标前字符
d{motion}删除(如 dw 删词,dd 删行)
dd删除整行
D删除至行尾
c{motion}删除并进入插入模式
cc替换整行
C替换至行尾
y{motion}复制(如 yw 复制词,yy 复制行)
yy复制整行
p光标后粘贴
P光标前粘贴
u撤销
Ctrl+R重做
~切换大小写
>>右缩进
<<左缩进
==自动缩进

选择 ^selection

命令说明
v字符选择
V行选择
Ctrl+V块选择
aw选择一个单词(含空格)
iw选择单词(不含空格)
ap选择段落
ip选择段落内容
a"选择双引号内容及引号
i"选择双引号内容

配置与设置 ^config

命令说明
:set number显示行号
:set relativenumber相对行号
:set tabstop=4Tab 宽度
:set shiftwidth=4缩进宽度
:set expandtab用空格替代 Tab
:set ignorecase查找不分大小写
:set hlsearch高亮查找结果
:set autoindent自动缩进
:set hidden缓冲区隐藏
:set mouse=a启用鼠标
:set colorscheme {name}设置配色
:edit ~/.vimrc编辑配置文件
:source ~/.vimrc重新加载配置

文件操作 ^file-ops

命令说明
:e {file}打开文件
:w保存
:w {file}另存为
:wq保存并退出
:q!不保存退出
:qa全部关闭
:qa!全部不保存关闭
:saveas {file}另存为
:read {file}插入另一文件内容
:!{cmd}执行外部命令

分屏 ^split

命令说明
:split水平分屏
:vsplit竖直分屏
:sp {file}水平分屏打开文件
:vsp {file}竖直分屏打开文件
Ctrl+W h/j/k/l在分屏间移动
Ctrl+W =等宽分屏
Ctrl+W _最大化水平
`Ctrl+W`

宏与重复 ^macro

命令说明
q{a-z}开始记录宏到寄存器 a-z
q停止记录
@{a-z}执行宏
@@重复上次宏
.重复上次修改
:range{n}重复 n 次

实操技巧

高效编辑模式

组合操作示例

" 删除单词并保留缩进
cw

" 在括号间跳转
%

" 重复上次命令
.

" 重复 5 次删除行
5dd

" 删除括号及其内容
di(

常用编程快捷方式

" 注释行(需配置 plugin)
gcc

" 增减缩进
>ip  (增加段落缩进)
<i{  (减少大括号内缩进)

" 格式化代码
gg=G  (全文自动缩进)

" 选中括号内所有内容
vi{

必备配置 (~/.vimrc)

" 基础设置
set number              " 显示行号
set relativenumber      " 相对行号
set tabstop=4          " Tab 宽度
set shiftwidth=4       " 缩进宽度
set expandtab          " 空格替代 Tab
set autoindent         " 自动缩进
set smartindent        " 智能缩进

" 查找与替换
set ignorecase         " 不分大小写
set smartcase          " 智能大小写
set hlsearch           " 高亮搜索
set incsearch          " 实时搜索

" UI 与交互
set mouse=a            " 启用鼠标
set hidden             " 缓冲区隐藏
set clipboard=unnamedplus  " 系统剪贴板
set background=dark    " 深色背景
colorscheme desert     " 配色方案

" 性能优化
set lazyredraw         " 延迟绘制
set ttyfast            " 快速终端
set history=1000       " 命令历史

" 文件编码
set encoding=utf-8
set fileencoding=utf-8

进阶学习路径

  1. 基础阶段 → 掌握上述快速查表的常用命令
  2. 提升阶段 → 学习 Vim Script、自定义快捷键
  3. 高效阶段 → 配置 Plugin(vim-plug、NeoVim)
  4. 专精阶段 → LSP、DAP、自定义扩展

参考资源

  • 内置教程::help {topic}
  • :help motion 查看移动命令
  • :help options 查看所有配置选项
  • Vim cheatsheet 查询::help index

最后更新: 2025-12-09

创建于 2025/12/9 更新于 2026/5/27