VIM 常用的有四个模式,:
- 正常模式 (Normal-mode)
- 插入模式 (Insert-mode)
- 命令模式 (Command-mode)
- 可视模式 (Visual-mode)
什么是正常模式(Normal-mode) ?
正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。这时击键时,一些组合键就是 vim 的功能键,而不会在文本中键入对应的字符。
在这个模式下,我们可以通过键盘在文本中快速移动光标,光标范围从小到大是字符、单词、行、句子、段落和屏幕。启动 VIM 后默认位于正常模式。不论是什么模式,按一下 键 ( 有时可能需要按两下,插入模式按一下 Esc ,就会切换到正常模式,命令模式或者可视模式下执行完操作以后,就会自动进入正常模式,如果进入命令模式或者可视模式没有执行任何操作,按两下 Esc 即可 )都会进入正常模式。
下面的三个模式都是过键盘上相应的键位去触发的。
什么是插入模式?(Insert-mode)
在正常模式中按下个别字母键(后面会详细介绍),会进入插入模式。
例如按 i 键会进行插入模式。该模式启动以后,就会进入编辑状态,通过键盘输入内容。
什么是命令模式(Command-mode)
在正常模式中,按下:(冒号)键或者/ (斜杠),会进入命令模式。在命令模式中可以执行一些输入并执行一些 VIM 或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。
什么是可视模式(Visual-mode)
在正常模式按下v, V, +v,可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。
基本操作
快捷键 |
功能 |
Esc |
从当前模式转换到“普通模式”。所有的键对应到命令。 |
i |
“插入模式”用于插入文字。回归按键的本职工作。 |
: |
“命令行模式” Vim 希望你输入类似于保存该文档命令的地方. |
方向键
快捷键 |
功能 |
h |
光标向左移动一个字符 |
j 或 Ctrl + J |
光标向下移动一行 |
k 或 Ctrl + P |
光标向上移动一行 |
l |
光标向右移动一个字符 |
0 |
(数字 0)移动光标至本行开头 |
$ |
移动光标至本行末尾 |
^ |
移动光标至本行第一个非空字符处 |
w |
向前移动一个词 (上一个字母和数字组成的词之后) |
W |
向前移动一个词 (以空格分隔的词) |
5w |
向前移动五个词 |
b |
向后移动一个词 (下一个字母和数字组成的词之前) |
B |
向后移动一个词 (以空格分隔的词) |
5b |
向后移动五个词 |
G |
移动至文件末尾 |
gg |
移动至文件开头 |
浏览文档
快捷键 |
功能 |
( |
跳转到上一句 |
) |
跳转到下一句 |
{ |
跳转到上一段 |
} |
跳转到下一段 |
[[ |
跳转到上一部分 |
]] |
跳转到下一部分 |
[] |
跳转到上一部分的末尾 |
][ |
跳转到上一部分的开头 |
插入文本
快捷键 |
功能 |
a |
在光标后插入文本 |
A |
在行末插入文本 |
i |
在光标前插入文本 |
o |
(小写字母 o)在光标下方新开一行 |
O |
(大写字母 O)在光标上方新开一行 |
特殊插入
快捷键 |
功能 |
:r [filename] |
在光标下方插入文件 [filename] 的内容 |
:r ![command] |
执行命令 [command] ,并将输出插入至光标下方 |
删除文本
快捷键 |
功能 |
x |
删除光标处字符 |
dw |
删除一个词 |
d0 |
删至行首 |
d$ |
删至行末 |
d) |
删至句末 |
dgg |
删至文件开头 |
dG |
删至文件末尾 |
dd |
删除该行 |
3dd |
删除三行 |
简单替换文本
快捷键 |
功能 |
r{text} |
将光标处的字符替换成 {text} |
R |
进入覆写模式,输入的字符将替换原有的字符 |
复制/粘贴文本
快捷键 |
功能 |
yy |
复制当前行至存储缓冲区 |
["x]yy |
复制当前行至寄存器 x |
p |
在当前行之后粘贴存储缓冲区中的内容 |
P |
在当前行之前粘贴存储缓冲区中的内容 |
["x]p |
在当前行之后粘贴寄存器 x 中的内容 |
["x]P |
在当前行之前粘贴寄存器 x 中的内容 |
撤销/重做操作
快捷键 |
功能 |
u |
撤销最后的操作 |
Ctrl+r |
重做最后撤销的操作 |
搜索和替换
快捷键 |
功能 |
/search_text |
检索文档,在文档后面的部分搜索 search_text |
?search_text |
检索文档,在文档前面的部分搜索 search_text |
n |
移动到后一个检索结果 |
N |
移动到前一个检索结果 |
:%s/original/replacement |
检索第一个 “original” 字符串并将其替换成 “replacement” |
:%s/original/replacement/g |
检索并将所有的 “original” 替换为 “replacement” |
:%s/original/replacement/gc |
检索出所有的 “original” 字符串,但在替换成 “replacement” 前,先询问是否替换 |
书签
快捷键 |
功能 |
m {a-zA-Z} |
在当前光标位置设置书签,书签名可用一个大小写字母({a-zA-Z}) |
:marks |
列出所有书签 |
{a-zA-Z} |
跳转到书签 {a-zA-Z} |
选择文本
快捷键 |
功能 |
v |
进入逐字可视模式 |
V |
进入逐行可视模式 |
Esc |
退出可视模式 |
改动选中文本
快捷键 |
功能 |
~ |
切换大小写 |
d |
删除一个词 |
c |
变更 |
y |
复制 |
> |
右移 |
< |
左移 |
! |
通过外部命令进行过滤 |
保存并退出
快捷键 |
功能 |
:q |
退出 Vim,如果文件已被修改,将退出失败 |
:w |
保存文件 |
:w new_name |
用 new_name 作为文件名保存文件 |
:wq |
保存文件并退出 Vim |
:q! |
退出 Vim,不保存文件改动 |
ZZ |
退出 Vim,如果文件被改动过,保存改动内容 |
ZQ |
与 :q! 相同,退出 Vim,不保存文件改动 |
Comments NOTHING