vim四种模式分别为普通模式、命令模式、编辑模式、视图模式
键位 | 作用 |
---|---|
j | 向下移动光标 |
k | 向上移动光标 |
h | 向左移动光标 |
l | 向右移动光标 |
0 | 移动行首 |
^ | 移动行首第一个非空白字符 |
$ | 移动行尾 |
g_ | 移动到行尾非空白字符 |
w/W | 正向移动到下一个单词词首 |
b/B | 反向移动到上一个单词词首 |
e/E | 正向移动到下一个单词词尾 |
ge | 反向移动到上一个单词词首 |
ctrl+f(forward) | 向下翻页 |
ctrl+b(back) | 向上翻页 |
ctrl+d | 向下翻半页 |
ctrl+u | 向上翻半页 |
zz | 把屏幕至于中间 |
H/M/L | 跳转到文本开头/中间/结尾 |
gg | 回到第一行行首 |
数字+gg/G | 移动到指定行行首 |
G | 移动到最后一行行首 |
g+ctrl+g | 光标所在行信息 |
j+ctrl+g | 获取文件名所在行数 |
>>/:> | 右缩进 |
<</:< | 左缩进 |
m,n>/:m>(n-m+1) | m到n行右缩进 |
>+数字 | 当前光标下几行进行缩进 |
:m>n | 指定m位置下n行进行缩进 |
dd | 剪切整行 |
yy | 复制整行 |
p/P | 粘贴 |
u | 撤销 |
ctrl+r | 重做/恢复之前操作 |
yw | 当前光标单个单词 |
y+数字+w | 复制正向多个单词 |
x/X | 剪切当前字符/剪切前一个字符 |
dw | 删除一个单词 |
dj | 删除当前行以及下一行 |
dk | 删除当前行以及上一行 |
dh | 删除前一个字符 |
dl | 删除当前字符 |
d$/D | 删除光标到行尾字符 |
d^ | 删除光标当行首字符 |
数字+dd | 删除向下几行 |
m+d+w | 删除正向单词m次 |
d+n+w | 正向删除nw动作 |
m+d+n+w | 正向删除nw动作m次 |
数字+w | 正向移动几个单词 |
shift+i/A | 插入行首/行尾 |
i | 光标前插入 |
a | 光标后插入 |
o/O | 下一行/上一行插入 |
数字+o | 向下插入几行 |
~ | 当个字符大小写转换 |
g~W | 单词大小写转换 |
g |
整行大小写转换 |
g+U/u+w | 单词转换成大/小写 |
g+U/u+n | 转换大/小写n行 |
. | 重复上一个操作 |
F/f{char} | 当前行反向/正向查找单个字符,; 匹配下一个字符 |
t{char} | 查找到前一个字符,; 匹配下一个字符 |
df{space} | 当前光标到一个单词词首的所有字符 |
/{char} | 全局搜索(n下一个,N上一个) |
:s/原/替/g | 当前行所有目标替换 |
:%s/原/替/g | %匹配所有范围 |
shift+r | 当前行进行替换 |
r | 对单个字符替换 |
cw | 修改单个单词 |
c$/C | 修改光标之后行内内容 |
c+数字+w | 修改多个单词 |
:files/buffers/ls | 查看缓冲区 |
:bp[previous] | 上一个缓冲区 |
:bn[next] | 下一个缓冲区 |
:bf[first] | 到第一个缓冲区 |
:bl[last] | 到最后一个缓冲区 |
:b Number/File_name | 指定缓冲区 |
:ball | 编辑所有缓冲区(:qall退出所有) |
Ctrl+^/b# | 切换到前一个buffer(交换buffer) |
badd | 打开新缓冲区 |
bd | 删除缓冲区 |
%bd | 删除所有缓冲区 |
:bufdo set number? | 查看所有缓冲区是否设置number |
vim -O/on | 水平/垂直分屏,n:数字,o:Open |
ctrl+w c/q | 关闭当前窗口/最后一个窗口时退出 |
ctrl+w s | 上下分割当前打开的文件 |
:sp filename | 上下分割,并打开一个新的文件 |
:vs filename | 左右分割,并打开一个新的文件 |
ctrl+w v | 左右分割当前打开的文件 |
:vsp filename | 左右分割,并打开一个新的文件 |
ctrl+w K | 光标移动上一个分屏 |
ctrl+w J | 光标移动下一个分屏 |
ctrl+w L | 光标移动右一个分屏 |
ctrl+w H | 光标移动左一个分屏 |
ctrl+w+ | 增加当前光标所在屏高度 |
ctrl+w- | 减少当前光标所在屏高度 |
ctrl+w= | 让所有屏的高度一致 |
:tabnew | 新建标签页 |
:tabfind | 查找并在新标签页中打开文件 |
:tabs | 显示已打开标签页的列表 |
:tabclose | 关闭当前标签页 |
:tabonly | 仅保留当前标签页打开 |
:tabn/p/first/last | 移动到下/上/第一/最后一个标签页 |
gt/T | 移动到下/上一个标签 |
{i}gt | 移动到i位置的标签 |
:tabe | 编辑标签中的某个文件 |
:tabm 0/tabm | 移动当前tab到第一个/最后一个 |
:tabm{i} | 移动当前tab到i+1位置 |
qa | 开始录制宏存到寄存器a中 |
qA | 追加宏在a寄存器中追加 |
n@a | 执行n遍a寄存器中的操作 |
@@ | 再执行一遍上一次操作 |
:n,mnormal @a | n到m行执行寄存器a宏操作 |
:let @a=’ | 编辑宏a寄存器 |
v | 激活面向字符的可视化模式 |
V/shift+v | 激活面向行的可视化模式 |
Ctrl+v | 激活面向列块的可视化模式 |
gv | 重选上次的高亮选区 |
o | 切换选取边界 |
ctrl+h | 插入模式删除上一个字符 |
ctrl+w | 插入模式删除上一个单词 |
ctrl+u | 插入模式删除当前行 |
gi | 快速移动到之前光标所在位置并进入插入模式 |
**** | |
**** | |
**** | |
**** | |
**** | |
**** | |
**** | |
**** | |
**** | |
**** |