Vim 使用笔记
文件操作
快捷键 | 说明 |
---|
:q | 关闭文件 |
:qa | 关闭全部文件 |
:w | 保存修改 |
:wq / :x | 保存修改并且关闭文件 |
ZZ | 保存文件并且退出 |
:q! / ZQ | 直接退出不保存修改 |
退出输入模式
快捷键 | 说明 |
---|
Esc / <C-[> | 退出输入模式 |
<C-C> | 退出输入模式并中止当前命令 |
编辑
修改
快捷键 | 说明 |
---|
a | 在光标后附加文本 |
A | 从行尾开始附加文本 |
i | 在光标前插入文本 |
o | 在当前行的下一行插入新行 |
O | 在当前行的上一行插入新行 |
s | 删除当前字符并进入输入模式 |
S | 删除当前行并进入输入模式 |
C | 删除光标后的所有内容并进入输入模式 |
r | 替换一个字符 |
R | 进入替换模式 |
u | 撤销更改 |
<C-R> | 重做更改 |
剪贴板
快捷键 | 说明 |
---|
x | 删除当前字符 |
dd | 删除当前行(剪切) |
yy | 复制当前行 |
p | 粘贴 |
P | 在光标前粘贴 |
"*p / "+p | 从系统剪贴板粘贴 |
"*y / "+y | 复制到系统剪贴板 |
可视模式
快捷键 | 说明 |
---|
v | 进入可视模式 |
V | 进入可视行模式 |
<C-V> | 进入可视块模式 |
在可视模式下
快捷键 | 说明 |
---|
d / x | 删除选中的文本 |
s | 替换选中的文本 |
y | 复制选中的文本 |
查看操作符或其他你可以执行的操作。
查找和替换
快捷键 | 说明 |
---|
:%s/foo/bar/g | 将文档中的所有 foo 替换为 bar |
导航
方向移动
快捷键 | 说明 |
---|
h j k l | 左下上右(箭头键) |
<C-U> / <C-D> | 向上/下滚动半页 |
<C-B> / <C-F> | 向上/下翻页 |
单词
快捷键 | 说明 |
---|
b / w | 前一个/下一个单词 |
ge / e | 前一个/下一个单词结尾 |
行
快捷键 | 说明 |
---|
0 (零) | 移动到行首 |
^ | 移动到行首第一个非空字符 |
$ | 移动到行尾 |
字符
快捷键 | 说明 |
---|
fc | 向前移动到字符 c |
Fc | 向后移动到字符 c |
文档
快捷键 | 说明 |
---|
gg | 移动到文档的第一行 |
G | 移动到文档的最后一行 |
:{number} | 移动到第 {number} 行 |
{number}G | 移动到第 {number} 行 |
{number}j | 向下移动 {number} 行 |
{number}k | 向上移动 {number} 行 |
窗口
快捷键 | 说明 |
---|
zz | 将当前行居中 |
zt | 将当前行移动到屏幕顶部 |
zb | 将当前行移动到屏幕底部 |
H | 移动到屏幕顶部 |
M | 移动到屏幕中间 |
L | 移动到屏幕底部 |
搜索
快捷键 | 说明 |
---|
n | 下一个匹配的搜索模式 |
N | 上一个匹配 |
* | 查找光标下的整个单词的下一个匹配 |
# | 查找光标下的整个单词的上一个匹配 |
操作符
使用方式
操作符可以让你对一定范围内的文本(由“动作”定义)进行操作,这些操作在普通模式下执行。
操作符列表
快捷键 | 说明 |
---|
d | 删除 |
y | 复制 |
c | 修改(删除并插入) |
> | 向右缩进 |
< | 向左缩进 |
= | 自动缩进 |
g~ | 切换大小写 |
gU | 转换为大写 |
gu | 转换为小写 |
! | 通过外部程序过滤 |
查看 :help operator
获取更多信息。
示例
将操作符与动作结合使用。
快捷键 | 说明 |
---|
dd | 删除当前行 |
dw | 删除到下一个单词 |
db | 删除到单词的开头 |
2dd | 删除两行 |
dip | 删除文本对象(段落内部) |
(在可视模式下)d | 删除选中的内容 |
查看 :help motion.txt
获取更多信息。
文本对象
使用方式
文本对象允许你对文本块(对象)内或周围的文本进行操作(使用操作符)。
操作符 | 范围 | 文本对象 |
---|
v | i | p |
Operator | [i]nside or [a]round | Text object |
文本对象列表
快捷键 | 说明 |
---|
p | 段落 |
w | 单词 |
s | 句子 |
[ ( { < | 一个 [] 、() 或 {} 块 |
' " ` | 一个引号字符串 |
b | 一个括号块(( ) |
B | 一个大括号块({ ) |
t | 一个 XML 标签块 |
示例
快捷键 | 说明 |
---|
vip | 选择段落 |
vipipipip | 选择更多 |
yip | 复制段落内部 |
yap | 复制段落(包括换行符) |
dip | 删除段落内部 |
cip | 修改段落内部 |
查看操作符以了解更多可以执行的操作。
对比
快捷键 | 说明 |
---|
gvimdiff file1 file2 [file3] | 在图形界面中比较文件差异 |
其他
标签页
快捷键 | 说明 |
---|
:tabedit [file] | 在新标签页中编辑文件 |
:tabfind [file] | 如果文件存在,在新标签页中打开 |
:tabclose | 关闭当前标签页 |
:tabs | 列出所有标签页 |
:tabfirst | 跳转到第一个标签页 |
:tablast | 跳转到最后一个标签页 |
:tabn | 跳转到下一个标签页 |
:tabp | 跳转到上一个标签页 |
折叠 (Folds)
快捷键 | 说明 |
---|
zo / zO | 打开折叠 |
zc / zC | 关闭折叠 |
za / zA | 切换折叠状态(打开/关闭) |
zv | 打开当前行的折叠 |
zM | 关闭所有折叠 |
zR | 打开所有折叠 |
zm | 增加折叠层级(折叠更多内容) |
zr | 减少折叠层级(展开更多内容) |
zx | 更新折叠状态 |
大写字母的命令是递归的,例如 zO
是递归打开折叠。
导航 (Navigation)
快捷键 | 说明 |
---|
% | 跳转到最近的匹配符 {[()]} |
[( [{ [< | 跳转到前一个 ( { < |
]) | 跳转到下一个匹配符 |
[m | 跳转到前一个方法的起始位置 |
[M | 跳转到前一个方法的结束位置 |
跳转 (Jumping)
快捷键 | 说明 |
---|
<C-O> | 返回到上一个位置 |
<C-I> | 前进到下一个位置 |
gf | 跳转到光标下的文件 |
计数器 (Counters)
窗口 (Windows)
快捷键 | 说明 |
---|
z{height}<Cr> | 将窗口调整到 {height} 行的高度 |
快捷键 | 说明 |
---|
:tag Classname | 跳转到 Classname 的第一个定义 |
<C-]> | 跳转到定义处 |
g] | 查看所有定义 |
<C-T> | 返回到上一个标签 |
<C-O> <C-I> | 前后跳转 |
:tselect Classname | 查找 Classname 的定义 |
:tjump Classname | 查找 Classname 的定义并自动选择第一个 |
大小写 (Case)
快捷键 | 说明 |
---|
~ | 切换大小写(例如:Case => cASE) |
gU | 转换为大写 |
gu | 转换为小写 |
gUU | 将当前行转换为大写(也可以用 gUgU ) |
guu | 将当前行转换为小写(也可以用 gugu ) |
这些操作可以在可视模式或普通模式下执行。
标记 (Marks)
| 快捷键 | 说明 | | — | — | | `^
| 光标在插入模式下的最后位置 | | `.
| 当前缓冲区中最后一次更改的位置 | | `"
| 最后一次退出当前缓冲区的位置 | | `0
| 最后编辑的文件中的位置 | | ''
| 返回到当前缓冲区中跳转前的行 | | ` ` | 返回到当前缓冲区中跳转前的位置 | |
[
| 返回到上次更改或复制的文本的开始位置 | |
] | 返回到上次更改或复制的文本的结束位置 | |
<
| 返回到上次可视模式选择的开始位置 | |
> | 返回到上次可视模式选择的结束位置 | | `ma` | 将当前位置标记为 `a` | |
a
| 跳转到标记
a 的位置 | |
‘a | 跳转到标记
a 所在行的开头 | |
d’a | 删除当前行到标记
a 所在行之间的内容 | |
d
a| 删除当前位置到标记 `a` 之间的内容 | | `c'a` | 更改当前行到标记 `a` 所在行之间的内容 | |
ya
| 复制当前位置到标记
a 之间的内容 | |
:marks | 列出所有当前标记 | |
:delm a | 删除标记
a | |
:delm a-d | 删除标记
a,
b,
c,
d | |
:delm abc | 删除标记
a,
b,
c` |
其他 (Misc)
快捷键 | 说明 |
---|
. | 重复上一个命令 |
]p | 根据当前缩进级别粘贴内容 |
:set ff=unix | 将 Windows 的行尾格式转换为 Unix 格式 |
命令行 (Command line)
快捷键 | 说明 |
---|
<C-R><C-W> | 将当前单词插入命令行 |
<C-R>" | 从 “ 寄存器中粘贴内容 |
<C-X><C-F> | 在插入模式下自动完成路径 |
文本对齐 (Text alignment)
:center [width] # 居中对齐指定宽度
:right [width] # 右对齐指定宽度
:left # 左对齐
参见 :help formatting
计算器 (Calculator)
快捷键 | 说明 |
---|
<C-R>=128/2 | 显示计算结果:如‘64’ |
在插入模式下执行。
以错误状态退出 (Exiting with an error)
功能类似于 :qa
,但会抛出一个错误。适用于中止 Git 命令等情况。
拼写检查 (Spell checking)
快捷键 | 说明 |
---|
:set spell spelllang=en_us | 启用美式英语拼写检查 |
]s | 移动到光标后下一个拼写错误的单词 |
[s | 移动到光标前上一个拼写错误的单词 |
z= | 为光标下或光标后的单词建议拼写 |
zg | 将单词添加到拼写列表 |
zw | 将单词标记为错误拼写 |
zu / C-X (插入模式) | 从拼写文件中为光标下的错误单词建议替代词 |
参见 :help spell
相关链接