编辑模式
- Normal:在文件中进行光标移动,编辑等操作,如字符串查找、删除、复制、粘贴等;
- Insert:进行插入文本操作;
- Replace:进行替换文本操作;
- Visual:对文本进行选择操作,如选择行、块;
- Command-line:运行命令操作,如保存文件、退出编辑器,以及对文件内容进行查找、替换。
模式切换
- 当前所处的模式默认显示在屏幕左下角;
- 初始模式为Normal
- 从任何模式切换回Normal:
<ESC> - 从Normal模式进入Insert:
i - 从Normal模式进入Replace:
R - 从Normal模式进入Visual:
v - 从Normal模式进入Visual Line:
V - 从Normal模式进入Visual Block:
<Ctrl-v> - 从Normal模式进入Command-line:
:
Normal
hjkl // 左下上右
w // 下一个单词
b // 上一个单词
Page Down // 下一页
Page Up // 上一页
0 // 到行首
^ // 该行第一个非空字符
End // 到行尾
[n]→ // 向右移动n个字符
[n]← // 向左移动n个字符
gg // 移到第一行
G // 移到最后一行
[n]G // 移到第n行
H // 屏幕顶端
M // 屏幕中间
L // 屏幕底端
Ctrl+u // 往上翻
Ctrl+d // 往下翻
x // 删除光标所在处的字符
dd // 删除当前行
[n]dd // 删除光标处开始的n行
d^ // 删除行首到光标的所有字符
d$ // 删除光标到行尾的所有字符
yy // 复制当前行
[n]yy // 复制光标处开始的n行
p // 粘贴到光标所在行之后
/string // 从上至下查找字符串string
?string // 从下至上查找字符串string
n // 定位下一个匹配的字符串
N // 定位上一个匹配的字符串
f[c] // 在一行内往后找第一个字符c
F[c] // 在一行内往前找第一个字符c
u // 取消最近一次操作
U // 取消对当前行所做的所有编辑
Ctrl+r // 重做最后一次撤销的操作
Insert
i // 进入插入模式
o // 另起一行进入插入模式
Visual
y // 复制
d // 删除
p // 粘贴
Command-line
:w // 保存文件
:w /root/filename // 另存为其他文件
:q // 未修改退出
:qa // 退出所有window
:q! // 放弃修改并退出
:wq // 保存并退出
:e filename // 打开文件
:s /old/new // 将当前行中查找到的第一个old替换成new
:s /old/new/g // 将当前行中查找到的所有old替换成new
:#,# s/old/new/g // 在行号#,#内替换所有old为new
:% s/old/new/g // 在整个文件内将所有old替换为new
:s /old/new/c // 对每个替换动作提示用户进行确认
:set nu // 显示行号
:set nonu // 不显示行号
:sp // 同一个文件开两个窗口
:tabnew // 新开一个tab
Tab、Buffer、Window
- Vim可以有多个Tab
- 每个Tab下可以有多个Buffer
- 一个Buffer对应一个文件
- 一个Buffer可以有多个Window
|