插入模式
左下角会显示 – 插入 –
按键 | 功能 |
---|
i | 光标前插入 |
I(大写i) | 本行开始处插入 |
a | 光标后插入 |
A | 本行末插入 |
o | 光标下插入新行 |
O | 光标上插入新行 |
[esc] | 退出插入模式,进入正常模式 |
正常模式
移动
字符
按键 | 功能 |
---|
j 或 ↓ | 向下移动 |
k 或 ↑ | 向上移动 |
h 或 ← | 向左移动 |
l(小写L) 或 → | 向右移动 |
行
按键 | 功能 |
---|
0、^ 或 [home] | 光标移至行首 |
$ 或 [end] | 光标移至行末 |
屏幕
按键 | 功能 |
---|
H | 光标移至屏幕上端行首 |
M | 光标移至屏幕中间行首 |
L | 光标移至屏幕下端行首 |
zt | 光标所在位置移到屏幕上方 |
zz | 光标所在位置移到屏幕中间 |
zb | 光标所在位置移到屏幕下方 |
CTRL + f | 向下翻页 |
CTRL + b | 向上翻页 |
CTRL + d | 向下翻半页 |
CTRL + u | 向上翻半页 |
文件
按键 | 功能 |
---|
gg | 光标跳到第1行 |
G | 光标移至文件末行首 |
15G | 光标移至15行行首 |
:4 | 光标移至第4行行首 |
[enter] | 光标移至下行行首 |
编辑
复制
按键 | 功能 |
---|
yy | 复制本行 |
nyy | 复制当前行一下n行 |
y$ | 复制光标处到行末 |
删除
按键 | 功能 |
---|
x | 删除光标所在处字符 |
nx | 删除光标后n个字符 |
剪切(删除)
按键 | 功能 |
---|
x | 剪切光标所在处字符 |
nx | 剪切光标后n个字符 |
dd | 剪切本行 |
ndd | 剪切本行以下n行 |
d$ 或 D | 剪切光标处到行末 |
:n1,n2d | 剪切n1至n2行 |
粘贴
按键 | 功能 |
---|
p(小写) | 粘贴在光标所在行下 |
P(大写) | 粘贴在光标所在行上 |
搜索
按键 | 功能 |
---|
/string | 向下搜索指定字符串(string) |
?string | 向上搜索指定字符串 |
: set noic | 不忽略大小写 |
: set ic | 搜索时忽略大小写 |
n | 跳到搜索字符串的下一个结果 |
N | 跳到搜索字符串的上一个结果 |
* | 向下查找光标所在单词 |
# | 向下查找光标所在单词 |
:set nohlsearch | 取消搜索高亮显示 |
:set hlsearch | 设置搜索高亮显示 |
:g/string | 只显示包含string的行 |
:g!/string 或 :v/string | 显示不包含string的行 |
替换
按键 | 功能 |
---|
:s/old/new | 替换当前行 old 为 new |
:%s/old/new/g | 全文替换指定字符串, /g不询问全替换,/c每个单独询问是否替换 |
:n1,n2s/old/new/g | 在 n1 至 n2 行之间替换字符串 |
撤销修改
按键 | 功能 |
---|
u | 撤销上一步操作 |
CTRL + r | 恢复撤销(重做) |
改写单个字符:光标移动到需要替换的字符处,按 r 键加要替换的字符
文件操作
按键 | 功能 |
---|
:wq 或 ZZ | 保存并退出 |
:q | 退出 |
:q! | 不保存退出 |
:w | 仅保存 |
:w new_filename | 另存为new_filename |
:wq! | 强行保存退出,仅文件所有者和root用户可以 |
:ol | 查看历史文件列表 |
:f new_filename | 重命名文件,但不保存 |
多文件打开
vim -o file1 file2 横排打开两个文件
按键 | 功能 |
---|
:vsp filename 或 :vnew filename | 竖排打开新文件filename |
:vsp | 竖排再打开同文件 |
:vnew | 竖排新打开vim窗口 |
:sp filename 或 :new filename | 横排打开新文件filename |
:sp | 横排再打开同文件 |
:new | 横排新打开vim窗口 |
:all | 切换窗口为横排 |
:close | 关闭当前窗口 |
CTRL + ww | 切换编辑窗口 |
CTRL + w + j 或 CTRL + w + ↓ | 向下跳转窗口 |
CTRL + w + k 或 CTRL + w + ↑ | 向上跳转窗口 |
CTRL + w + h 或 CTRL + w + ← | 向左跳转窗口 |
CTRL + w + l 或 CTRL + w + → | 向右跳转窗口 |
CTRL + w + r | 向下或右移动窗口 |
CTRL + w + R | 向上或左移动窗口 |
CTRL + w + x | 交换窗口 |
比较
vimdiff file1 file2
竖排打开两个文件并比较
按键 | 功能 |
---|
]c | 调转到下一个不同处 |
[c | 跳转到上一个不同处 |
dp | 该差异点使用当前文件的 |
do | 该差异点使用其它文件的 |
:diffupdate | 手动刷新重新比较 |
:qa | 退出vimdiff |
代码
按键 | 功能 |
---|
gg=G | 全文格式化(自动缩进) |
4G=10G | 自动缩进4至10行 |
:1,5s/^/#/g | 1到5行行首加 “#” |
:4,6s/^#//g | 4到6行行首去掉 “#” |
:3,4s/^/\/\//g | 3到4行行首加 “//” 注释 |
:1,20s/^\s*[0-9]*\s*//g | 去除 1-20 行首的行号 |
» | 缩进当前行 |
« | 反向缩进当前行 |
:set foldmethod=indent | 设置用缩进表示折叠 |
zR | 展开全部折叠 |
zr | 展开当前层级折叠 |
zM | 全部折叠 |
zm | 当前层级折叠 |
za | 切换当前层级折叠/展开 |
zA | 递归折叠/展开当前大区块 |
zc | 折叠当前区块 |
zC | 递归折叠当前大区块 |
zo | 展开当前区块 |
zO | 递归展开当前大区块 |
其他
按键 | 功能 |
---|
! | 在命令后加!,表示强制执行 |
: !命令 | 不退出vim执行命令 |
:r filename | 在光标所在行处导入filename文件内容 |
:r !命令 | 导入命令结果 |
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
替换模式(改写)
左下角会显示 – 替换 –
按键 | 功能 |
---|
R | 从光标处进入替换模式 |
[esc] | 退出替换模式,进入正常模式 |
可视模式
按键 | 功能 |
---|
v | 可视 |
V | 行可视 |
CTRL + v | 块可视(常用) |
[esc] | 退出可视模式到正常模式 |
可视(v)
左下角会显示 – 可视 –
按键 | 功能 |
---|
j 或 ↓ | 向下选中 |
k 或 ↑ | 向上选中 |
h 或 ← | 向左选中 |
l(小写L) 或 → | 向右选中 |
^ | 选中光标位置到行首 |
$ | 选中光标位置到行末 |
d | 剪切选块 |
y | 复制选块 |
p(小写) | 在光标后粘贴选块 |
P(大写) | 在光标前粘贴选块 |
行可视(V)
左下角会显示 – 可视 行 –
按键 | 功能 |
---|
j 或 ↓ | 向下选中 |
k 或 ↑ | 向上选中 |
d | 剪切选块 |
y | 复制选块 |
p(小写) | 在光标后粘贴选块 |
P(大写) | 在光标前粘贴选块 |
块可视(CTRL + v)
左下角会显示 – 可视 块 –
按键 | 功能 |
---|
j 或 ↓ | 向下选中 |
k 或 ↑ | 向上选中 |
h 或 ← | 向左选中 |
l (小写L)或 → | 向右选中 |
^ | 选中光标位置到行首 |
$ | 选中光标位置到行末 |
d | 剪切选块 |
y | 复制选块 |
p(小写) | 在光标后粘贴选块 |
P(大写) | 在光标前粘贴选块 |
I(大写i) | 插入模式;选中多行,按I进入插入模式,输入要插入的字符,按[esc],完成多行批量插入字符 |
配置文件
用户配置文件: ~/.vimrc
系统配置文件: /etc/vimrc