个人整理的vim常用关捷健操作
移动光标
| 命令 / 按键 | 说明 |
|---|
ctrl + a | 快速移动到 shell 的行头 |
ctrl + e | 快速移动到 shell 的行尾 |
alt + b(esc + b) | 往左移动一个单词 |
alt + f(esc + f) | 往后移动一个单词 |
编辑命令
| 命令 / 按键 | 说明 |
|---|
ctrl + w | 由光标开始,往左删除单词。往行首删 |
alt + d | 由光标位置开始,往右删除单词。往行尾删 |
esc + d | 由光标位置开始,删除单词,直到该单词结束 |
ctrl + k | 由光标所在位置开始,删除右方所有的字符,直到该行结束 |
ctrl + u | 由光标所在位置开始,删除左方所有的字符,直到该行开始 |
ctrl + _ | 撤销操作 |
vim
多文件操作
| 命令 / 按键 | 说明 |
|---|
vim file1 file2 | 打开多个文件 |
:ls | 列出所有 vim 打开的文件 |
:b{文件序号} | 显示第几个序号的文件 |
:bn | 进行上一个文件的切换 |
:bp | 进行下一个文件的切换 |
分屏操作
| 命令 / 按键 | 说明 |
|---|
vim -On file1 file2 ... | 左右分屏 |
vim -on file1 file2 ... | 上下分屏 |
:sp file | 上下分屏展示当前文件和新的 file |
:vsp file | 左右分屏展示当前文件和新的 file |
分屏后移动光标
| 命令 / 按键 | 说明 |
|---|
ctrl + w h | 移动光标到左屏 |
ctrl + w l | 移动光标到右屏 |
ctrl + w j | 移动光标到下屏 |
ctrl + w k | 移动光标到上屏 |
ctrl + w c | 关闭当前分屏 |
vim 退出
| 命令 / 按键 | 说明 |
|---|
:qa! | 退出所有的文件,对所有的文件修改都不做保存。 |
ZZ | 当你对文件进行了修改,需要保存退出,快速操作 |
输入
| 命令 / 按键 | 说明 |
|---|
i | 在光标所在的字符之前插入需要录入的文本。 |
I | 在光标所在行的行首插入需要录入的文本。 |
a | 在光标所在的字符之后插入需要录入的文本。 |
A | 在光标所在行的行尾插入需要录入的文本。 |
o | 光标所在行的下一行行首插入需要录入的文本。 |
O | 光标所在行的上一行行首插入需要录入的文本。 |
s | 删除光标所在处的字符然后插入需要录入的文本。 |
S | 删除光标所在行,在当前行的行首开始插入需要录入的文本。 |
cw | 删除从光标处开始到该单词结束的所有字符,然后插入需要录入的文本 |
caw | 删除当前的单词,然后插入需要录入的文本 |
命令模式下set指令
| 命令 / 按键 | 说明 |
|---|
:set ic | 用来不区分大小写的查询 |
:set noic | 用来区分大小写的查询 |
:set ff? | 检查文件编码 |
:set ff=unix | 统一设置编码 |
:set hls | 设置匹配高亮模式 |
:set nohls | 设置匹配不高亮 |
:nohl | 临时关闭高亮 |
文本处理
删除
| 命令 / 按键 | 说明 |
|---|
:1,2d | 删除第 1 行到第 2 行 |
:'<,'>g/^$/d | 进入可视模式后,输入 : vim 会自动补全为 :'<,'>,这个是可视范围下的操作范围,然后删除所有空行 |
替换
:{作用范围}s/{目标}/{替换}/{替换的标志}
| 命令 / 按键 | 说明 |
|---|
:s/zempty/handsome/g | 将会把当前光标所在行的 zempty 替换成 handsome |
:%s/zempty/handsome/g | 将会把全文中的 zempty 替换成 handsome |
:n1,n2s/zempty/handsome/g | 这里的 n1 和 n2 值得是行号,将会替换掉 n1 到 n2 的所有 zempty 为 handsome. |
:'<,'>s/zempty/handsome/g | 进入可视模式后,输入 : vim 会自动补全为 :'<,'>,这个是可视范围下的操作范围 |
替换标志
| 命令 / 按键 | 说明 |
|---|
g | 全局替换 |
| 空替换标志,只替换目标的第一次出现 |
i | 大小写不敏感的替换 |
I | 大小写敏感 |
gi | 全局不区分大小写替换 |
c | 表示需要确认,vim 会弹出确认框 |
别名
| 命令 / 按键 | 说明 |
|---|
:ab email xxx@gmail.com | 后续编辑模式下输入 email,将自动替换为 xxx@gmail.com |
选中
| 命令 / 按键 | 说明 |
|---|
aw | 选中整个单词 |
va{字符} | 选中字符包含的整段 |
执行指令
| 命令 / 按键 | 说明 |
|---|
:!command | vim 中执行 linux 命令 |
:r !command | 将命令的执行结果,添加到文本中 |
移动光标
| 命令 / 按键 | 说明 |
|---|
h | 左 |
l | 右 |
k | 上 |
j | 下 |
gj | 去往视觉意义的下一行(有些情况某些行只是展示成了多行,实际还是一行) |
gk | 去往视觉意义的上一行 |
{n}k | 向上移动 n 行 |
{n}h | 向左移动 n 个单词 |
ctrl + u | 向上翻页 |
ctrl + d | 向下翻页 |
w | 跳转到下一个单词的开头 |
e | 跳转到下一个单词的末尾 |
W | 跳转到下一个单词的开头,只以空格作为分隔符 |
E | 跳转到下一个单词的末尾,只以空格作为分隔符 |
b | 跳转到上一个单词 |
B | 跳转到上一个单词,只以空格作为分隔符 |
0 | 移动到开头 |
$ | 移动到末尾 |
^ | 移动到本行的第一个不是 blank 字符 |
A | 跳转到这一行的末尾插入 |
I | 跳转到这一样的开头插入 |
g_ | 移动到本行最后一个不是 blank 字符 |
f{字符} | 移动到本行的目标字符上 |
{n}f{字符} | 移动到本行光标处开始的第 n 个 字符为 a 的地方(n 是 1,2,3,4 … 数字) |
F{字符} | 同 f{字符} 一样,光标反方向移动 |
{n}F{字符} | 同 {n}f{字符} 类似,光标移动方向同 {n}f{字符} 相反 |
t{字符} | 移动到本行的目标字符的前一个字符 |
T{字符} | 移动到本行的目标字符的下一个字符 |
; | 重复上一条移动的命令 |
} | 跳转到下一个段落 |
{ | 跳转到上一个段落 |
% | 跳转到{对应的下一个括号 |
m{字符} | 标记某一处位置 |
'{字符} | 跳转到某一处位置 |
gi | 快速跳转到上一次输入的地方 |