四种模式
模式间的切换
Normal模式下按 v 进入Visual模式,按 v, Esc, y, d 退出回到Normal模式。
Normal模式下按 : 进入Command模式,按 Esc 退出回到Normal模式。
Normal模式下按 i, I, a, A, o, O 进入Insert模式,按 Esc 退出回到Normal模式。
任意其它模式下按 Esc 进入Normal模式。
常用快捷键
Insert模式
Visual模式
可以移动光标,选中区域进行操作:
光标选中区域后按 y 复制,移动到目标位置后再按 p 粘贴
光标选中区域后按 x 删除
Normal模式
y^ 从行首到光标所在位置之前的字符复制(不包含光标)
y$ 从光标所在位置到行尾的字符复制(包含光标)
yy 复制光标所在行的字符
nyy 复制光标所在行向下的n行字符(包括本行)
p 在光标所在行的下一行添加新行,粘贴复制的内容
P 在光标所在行的上一行添加新行,粘贴复制的内容
x 删除光标所在位置的单个字符
dw 删除光标所在位置的整个单词(包括该单词后的空格)
d^ 从行首到光标所在位置之前的字符删除(包含光标到行尾的字符保留)
d$ 从光标所在位置(包含)到行尾的字符删除(行首到光标前的字符保留)
dd 删除光标所在行一整行的字符(即该行消失)
ndd 删除光标所在行向下的n行字符(包括本行)
u 撤销前一步的操作
CTRL + u 反撤销
CTRL + v 可视块操作(常用于行的批量操作,例如一次性删除连续多行的开头注释符号“//”,可Normal模式下按 CTRL + v ,光标一直向下选中每一行的开头“//”,再按 x 即可一次性完成删除)
翻页
CTRL + u 向前翻半页
CTRL + d 向后翻半页
CTRL + b 向前翻一页
CTRL + f 向后翻一页
移动光标
- 将光标移动到上一行第一个字符
+ 将光标移动到下一行的第一个字符
Shift + ^ 将光标移动到本行的行首(在Command模式下,直接输入数字0,效果也是直接到行首)
Shift + $ 将光标移动到本行的行尾
} 移动到下一个Block(Bock就是以空行分割的区域)
{ 移动到上一个Block
w 移动到下一个word
G的用法
G 是用来将光标移动到某一行的快捷键。
GG 将光标移动到文件最后一行第一个字符处
gg 将光标移动到文件第一行第一个字符处
nG 将光标移动到第n行的第一个字符处
ngg 跟 nG 功能相同
d + nG 删掉光标所在行向下一直到第n行的字符(包括本行与第n行)
d + ngg 跟 d + nG 功能相同
y + nG 复制光标所在行向下一直到第n行的字符(包括本行与第n行)
y + ngg 跟 y + nG 功能相同
dgg 从文件第一行一直删到光标所在位置之前(不包括光标)
dGG 从光标所在位置一直删到文件最后一行(包括光标和最后一行)
Command模式
Normal模式下按冒号进入Command模式,之后可以输入以下命令:
w 保存文件
q 退出文件
q! 强制退出
wq 保存并退出
wq! 保存并强制退出
args 显示文件名称,切换文件
e foo.txt 打开foo.txt文件
saveas ~/foo.txt 另存为~/foo.txt文件
split 切分窗口, vsplit
set n 设置行号
$ 的效果和 GG 的一样,光标直接跳到最后一行开头
n 的效果也和 nG 一样,光标直接跳到第n行开头
搜索
:/keyword 向下搜索,如果到底了,vim会自动从头开始
:?keyword 向上搜索,如果到头了,vim会自动从底部开始
搜索之后,按
n 到下一处搜索匹配的位置
N 到上一处搜索匹配的位置
针对光标停留处的特定单词,可以使用快捷键进行向上和向下的搜索,而且是vim的全词搜索:
Shift + 8 即*键,直接对光标停留处的单词进行向下搜索
Shift + 3 即#键,直接对光标停留处的单词进行向上搜索
:set hlsearch 搜索词高亮显示设置
:nohl 取消搜索词高亮显示,用快捷键搜索的高亮也用此命令取消
其它技巧
文件保存后(连按两次 Esc ),vim会自动做静态语法检测。
Shift + ZZ 保存并退出文件。
:x 也是保存并退出。
挂起与唤回
当时用vim编程时,时常需要切换回控制台运行测试代码,比较麻烦。这时可以使用 CTRL + z 将vim调至后台挂起,界面自动跳回控制台,会有文字提示vim被挂起(进程编号即对应的运行中的vim),当控制台操作完成后(例如编译运行看结果),再按 fg 即可唤起之前被挂起的vim至前台,继续编辑。
在vim界面,保存文件后,也可直接按 F5 快速切换回控制台,再按回车可直接编译运行程序(不必再自己操作编译过程)。
vimtutor
vim的使用手册,所有功能和操作可在此学习查询。
个性化vim配置
详见github ma6174主页,上面整合了众多优秀的vim插件,可根据自己的需求进行个性化配置。