Vim编辑器使用指南
Vim基本概念
Vim模式
| 模式 | 说明 | 进入方式 |
|---|
| 普通模式 | 默认模式,用于浏览和操作 | Esc |
| 插入模式 | 用于输入文本 | i, a, o 等 |
| 可视模式 | 用于选择文本 | v, V, Ctrl+v |
| 命令模式 | 用于执行命令 | : |
模式切换
普通模式 ←── Esc ──→ 插入模式
│ ↑
│ i, a, o 等 │
└────────────────────┘
普通模式 ←── Esc ──→ 可视模式
│ ↑
│ v, V, Ctrl+v │
└────────────────────┘
普通模式 ── : ──→ 命令模式
普通模式命令
光标移动
| 命令 | 说明 |
|---|
h j k l | 左 下 上 右 |
w | 下一个单词开头 |
W | 下一个空格分隔的单词开头 |
b | 上一个单词开头 |
B | 上一个空格分隔的单词开头 |
e | 当前单词结尾 |
0 | 行首 |
^ | 行首第一个非空白字符 |
$ | 行尾 |
gg | 文件开头 |
G | 文件结尾 |
nG | 跳到第n行 |
Ctrl+f | 向下翻页 |
Ctrl+b | 向上翻页 |
Ctrl+d | 向下翻半页 |
Ctrl+u | 向上翻半页 |
% | 跳转到匹配的括号 |
插入命令
| 命令 | 说明 |
|---|
i | 在光标前插入 |
I | 在行首插入 |
a | 在光标后插入 |
A | 在行尾插入 |
o | 在下方新建行插入 |
O | 在上方新建行插入 |
s | 删除字符后插入 |
S | 删除整行后插入 |
删除命令
| 命令 | 说明 |
|---|
x | 删除光标字符 |
X | 删除光标前字符 |
dd | 删除整行 |
dw | 删除到单词结尾 |
d$ | 删除到行尾 |
d0 | 删除到行首 |
dG | 删除到文件结尾 |
dgg | 删除到文件开头 |
ndd | 删除n行 |
D | 删除到行尾(同d$) |
复制和粘贴
| 命令 | 说明 |
|---|
yy | 复制整行 |
yw | 复制单词 |
y$ | 复制到行尾 |
p | 在光标后粘贴 |
P | 在光标前粘贴 |
nyy | 复制n行 |
替换命令
| 命令 | 说明 |
|---|
r | 替换当前字符 |
R | 进入替换模式 |
cw | 替换单词 |
c$ | 替换到行尾 |
C | 替换到行尾(同c$) |
撤销和重做
| 命令 | 说明 |
|---|
u | 撤销 |
Ctrl+r | 重做 |
U | 撤销当前行所有修改 |
重复命令
可视模式
进入可视模式
可视模式操作
| 命令 | 说明 |
|---|
d / x | 删除选中内容 |
y | 复制选中内容 |
p | 粘贴 |
c | 替换选中内容 |
> | 增加缩进 |
< | 减少缩进 |
u | 转小写 |
U | 转大写 |
块编辑示例
# 在多行行首插入
Ctrl+v 选择多行 → I → 输入内容 → Esc
# 在多行行尾插入
Ctrl+v 选择多行 → $ → A → 输入内容 → Esc
# 批量删除行首字符
Ctrl+v 选择多行 → d
命令模式
文件操作
| 命令 | 说明 |
|---|
:w | 保存 |
:w filename | 另存为 |
:q | 退出 |
:q! | 强制退出(不保存) |
:wq | 保存并退出 |
:x | 保存并退出 |
ZZ | 保存并退出(普通模式) |
:e filename | 打开文件 |
:r filename | 插入文件内容 |
查找和替换
| 命令 | 说明 |
|---|
/pattern | 向下搜索 |
?pattern | 向上搜索 |
n | 下一个匹配 |
N | 上一个匹配 |
:s/old/new/ | 替换当前行第一个 |
:s/old/new/g | 替换当前行所有 |
:%s/old/new/g | 替换全文所有 |
:%s/old/new/gc | 替换全文(需确认) |
:n,ms/old/new/g | 替换n到m行 |
行号和定位
| 命令 | 说明 |
|---|
:set nu | 显示行号 |
:set nonu | 隐藏行号 |
:n | 跳到第n行 |
:. | 当前行号 |
:$ | 最后一行行号 |
窗口操作
| 命令 | 说明 |
|---|
:sp filename | 水平分割窗口 |
:vsp filename | 垂直分割窗口 |
Ctrl+w w | 切换窗口 |
Ctrl+w h/j/k/l | 切换到左/下/上/右窗口 |
Ctrl+w c | 关闭当前窗口 |
:q | 关闭当前窗口 |
标签页操作
| 命令 | 说明 |
|---|
:tabnew | 新建标签页 |
:tabn | 下一个标签页 |
:tabp | 上一个标签页 |
:tabc | 关闭当前标签页 |
常用设置
~/.vimrc配置示例
" ========== 基础设置 ==========
set nocompatible " 不兼容Vi
set encoding=utf-8 " 编码
set fileencoding=utf-8
set fileencodings=utf-8,gbk
" ========== 显示设置 ==========
set number " 显示行号
set relativenumber " 相对行号
set cursorline " 高亮当前行
set showmatch " 显示匹配括号
set ruler " 显示光标位置
set showcmd " 显示命令
set wildmenu " 命令行补全菜单
" ========== 编辑设置 ==========
set tabstop=4 " Tab宽度
set shiftwidth=4 " 缩进宽度
set softtabstop=4 " 软Tab宽度
set expandtab " Tab转空格
set autoindent " 自动缩进
set smartindent " 智能缩进
set wrap " 自动换行
" ========== 搜索设置 ==========
set incsearch " 增量搜索
set hlsearch " 高亮搜索结果
set ignorecase " 忽略大小写
set smartcase " 智能大小写
" ========== 性能设置 ==========
set lazyredraw " 延迟重绘
set updatetime=300 " 更新时间
" ========== 快捷键映射 ==========
" Leader键
let mapleader = ","
" 快捷保存
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
" 清除搜索高亮
nnoremap <leader>h :nohlsearch<CR>
" 窗口切换
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-plug
" call plug#begin('~/.vim/plugged')
" Plug 'tpope/vim-fugitive'
" call plug#end()
实用技巧
快速移动
# 行内快速移动
f + 字符 " 跳转到下一个该字符
F + 字符 " 跳转到上一个该字符
t + 字符 " 跳转到下一个该字符前
T + 字符 " 跳转到上一个该字符后
# 组合移动
3w " 向前移动3个单词
5j " 向下移动5行
文本对象
# 操作 + 范围 + 对象
diw " 删除单词
daw " 删除单词(含空格)
di" " 删除引号内内容
da" " 删除引号及内容
di( " 删除括号内内容
da( " 删除括号及内容
dit " 删除标签内内容
dat " 删除标签及内容
寄存器
:reg " 查看寄存器内容
"ayy " 复制到寄存器a
"ap " 粘贴寄存器a内容
"0p " 粘贴最近复制内容
"+p " 粘贴系统剪贴板
宏录制
qa " 开始录制宏到寄存器a
... " 执行操作
q " 停止录制
@a " 执行宏a
10@a " 执行宏a 10次
@@ " 重复上次宏
💡 学习建议:
- 先掌握基本移动和编辑命令
- 多使用
. 重复命令
- 善用文本对象提高效率
- 配置适合自己的
.vimrc
🔗 相关笔记: 02.02_快捷键 99.01_常用命令速查表