目录
1. Vim 基础概念
Vim(Vi Improved)是一个功能强大的文本编辑器,基于模式操作。理解不同模式是掌握Vim的关键。
1.1 Vim 的四种主要模式
- 普通模式(Normal Mode) - 默认模式,用于导航和执行命令
- 插入模式(Insert Mode) - 用于输入文本
- 命令行模式(Command-line Mode) - 用于执行Ex命令
- 可视化模式(Visual Mode) - 用于选择文本
2. 模式切换
2.1 进入不同模式
启动Vim后默认处于普通模式
普通模式 → 插入模式:
i - 在光标前插入
I - 在行首插入
a - 在光标后插入
A - 在行尾插入
o - 在下方新建行并插入
O - 在上方新建行并插入
s - 删除光标下字符并插入
S - 删除整行并插入
普通模式 → 命令行模式:
: - 进入命令行模式
/ - 向前搜索
? - 向后搜索
普通模式 → 可视化模式:
v - 字符可视化模式
V - 行可视化模式
Ctrl+v - 块可视化模式
退出到普通模式:
Esc - 从任何模式返回普通模式
Ctrl+[ - 同Esc键功能
2.2 模式指示
- 普通模式:光标为块状,状态栏无特殊指示
- 插入模式:光标为竖线,状态栏显示
-- INSERT --
- 可视化模式:状态栏显示
-- VISUAL --
- 命令行模式:底部出现命令行提示符
3. 普通模式快捷键
3.1 光标移动
基本移动
h - 左移一个字符
j - 下移一行
k - 上移一行
l - 右移一个字符
w - 移动到下一个单词开头
W - 移动到下一个空白分隔的单词开头
b - 移动到上一个单词开头
B - 移动到上一个空白分隔的单词开头
e - 移动到当前单词结尾
E - 移动到当前空白分隔单词结尾
行内移动
0 - 移动到行首
^ - 移动到行首第一个非空字符
$ - 移动到行尾
g_ - 移动到行尾最后一个非空字符
页面移动
gg - 移动到文件开头
G - 移动到文件结尾
数字G - 移动到指定行号
Ctrl+f - 向下翻页
Ctrl+b - 向上翻页
Ctrl+d - 向下翻半页
Ctrl+u - 向上翻半页
H - 移动到屏幕顶部
M - 移动到屏幕中间
L - 移动到屏幕底部
查找移动
f字符 - 向前查找字符并移动到该位置
F字符 - 向后查找字符并移动到该位置
t字符 - 向前查找字符并移动到该字符前
T字符 - 向后查找字符并移动到该字符后
; - 重复上次f/F/t/T命令
, - 反向重复上次f/F/t/T命令
3.2 文本编辑
删除操作
x - 删除光标下的字符
X - 删除光标前的字符
dd - 删除整行
dw - 删除一个单词
d$ - 删除到行尾
d^ - 删除到行首
D - 删除到行尾(同d$)
数字dd - 删除多行
复制和粘贴
yy - 复制整行
yw - 复制一个单词
y$ - 复制到行尾
p - 在光标后粘贴
P - 在光标前粘贴
数字yy - 复制多行
撤销和重做
u - 撤销上一次操作
Ctrl+r - 重做被撤销的操作
U - 撤销对整行的修改
. - 重复上一次操作
替换操作
r字符 - 替换光标下的字符
R - 进入替换模式
s - 删除字符并进入插入模式
S - 删除整行并进入插入模式
c - 删除并进入插入模式(需要配合移动命令)
cw - 删除单词并进入插入模式
cc - 删除整行并进入插入模式
C - 删除到行尾并进入插入模式
3.3 数字前缀
大多数命令可以使用数字前缀来重复执行:
3dd - 删除3行
5yy - 复制5行
4j - 向下移动4行
2w - 向前移动2个单词
4. 插入模式快捷键
4.1 基本输入
正常输入文字即可
4.2 插入模式下的移动
Ctrl+h - 删除前一个字符(同退格键)
Ctrl+w - 删除前一个单词
Ctrl+u - 删除到行首
4.3 插入特殊字符
Ctrl+v + 字符 - 插入控制字符
Ctrl+k + 两字符 - 插入digraph字符
5. 命令行模式
5.1 文件操作命令
:w - 保存文件
:w filename - 另存为
:q - 退出
:q! - 强制退出(不保存)
:wq - 保存并退出
:x - 保存并退出(同:wq)
ZZ - 保存并退出(普通模式下)
ZQ - 不保存退出(普通模式下)
5.2 编辑命令
:e filename - 打开文件
:r filename - 读取文件内容到当前位置
:!command - 执行shell命令
5.3 行号和跳转
:set number - 显示行号
:set nonumber - 隐藏行号
:数字 - 跳转到指定行
6. 可视化模式
6.1 选择文本
v - 字符选择模式
V - 行选择模式
Ctrl+v - 块选择模式
6.2 可视化模式下的操作
d - 删除选中文本
y - 复制选中文本
c - 删除选中文本并进入插入模式
> - 向右缩进
< - 向左缩进
u - 转换为小写
U - 转换为大写
7. 搜索和替换
7.1 搜索
/pattern - 向前搜索
?pattern - 向后搜索
n - 下一个匹配项
N - 上一个匹配项
* - 搜索光标下的单词(向前)
# - 搜索光标下的单词(向后)
7.2 替换
:s/old/new/ - 替换当前行第一个匹配
:s/old/new/g - 替换当前行所有匹配
:%s/old/new/g - 替换全文所有匹配
:%s/old/new/gc - 替换全文所有匹配(确认模式)
:1,10s/old/new/g - 替换第1-10行的匹配
8. 窗口和标签页操作
8.1 窗口分割
:sp filename - 水平分割窗口
:vsp filename - 垂直分割窗口
Ctrl+w + h - 移动到左边窗口
Ctrl+w + j - 移动到下边窗口
Ctrl+w + k - 移动到上边窗口
Ctrl+w + l - 移动到右边窗口
Ctrl+w + w - 切换到下一个窗口
Ctrl+w + c - 关闭当前窗口
Ctrl+w + o - 只保留当前窗口
8.2 标签页操作
:tabnew filename - 新建标签页
:tabc - 关闭当前标签页
:tabo - 关闭其他标签页
gt - 下一个标签页
gT - 上一个标签页
数字gt - 跳转到指定标签页
9. 高级技巧
9.1 宏录制
q字母 - 开始录制宏到指定寄存器
q - 停止录制
@字母 - 执行宏
@@ - 重复执行上次宏
9.2 寄存器操作
"字母yy - 复制到指定寄存器
"字母p - 从指定寄存器粘贴
:reg - 查看所有寄存器内容
9.3 标记和跳转
m字母 - 在当前位置设置标记
'字母 - 跳转到标记位置
'' - 跳转到上次位置
`. - 跳转到最后修改位置
9.4 折叠操作
zf - 创建折叠
zo - 打开折叠
zc - 关闭折叠
za - 切换折叠状态
zR - 打开所有折叠
zM - 关闭所有折叠
9.5 缩进操作
>> - 向右缩进当前行
<< - 向左缩进当前行
= - 自动缩进
gg=G - 自动缩进整个文件
10. 配置文件
10.1 基本配置 (~/.vimrc)
" 显示行号
set number
" 启用语法高亮
syntax on
" 设置缩进
set tabstop=4
set shiftwidth=4
set expandtab
" 搜索设置
set hlsearch
set incsearch
set ignorecase
set smartcase
" 其他有用设置
set autoindent
set smartindent
set ruler
set showcmd
set showmatch
11. 实用技巧总结
-
学习顺序建议:
- 先掌握基本的模式切换
- 熟练掌握hjkl移动
- 学会基本的编辑操作(i, a, o, dd, yy, p)
- 逐步学习更高级的功能
-
提高效率的关键:
- 尽量在普通模式下操作
- 使用数字前缀重复命令
- 学会使用点号(.)重复操作
- 掌握快速移动命令
-
常见问题解决:
- 如果不知道当前在什么模式,按Esc回到普通模式
- 意外进入替换模式时按Esc退出
- 搜索高亮太多时用
:noh
清除高亮
-
练习建议:
- 使用vimtutor进行基础练习
- 强制自己不使用方向键,只用hjkl
- 每天学习一两个新的快捷键
- 在实际编程中应用所学技巧
记住:Vim的学习曲线较陡峭,但一旦掌握,将大大提高文本编辑效率!