Gvim Note
光标跳转
命令 | 解释 |
---|---|
h i j k | 移动光标 |
gj gk | 屏幕行移动移动光标 |
0 | 移动光标至行首 |
$ | 移动光标至行尾 |
^ | 移动至行首第一个非空字符 |
g0 | 屏幕行移动光标至行首 |
g$ | 屏幕行移动光标至行尾 |
g^ | 屏幕行移动至行首第一个非空字符 |
% | 移动至匹配括号 |
w | 移动至下一词首 |
b | 移动至前一词首 |
e | 移动至下一词尾 |
ge | 移动至前一词尾 |
W | 移动至下一字串首 |
B | 移动至前一字串首 |
E | 移动至下一字串尾 |
gE | 移动至前一字串尾 |
a | 光标后插入 |
A | 行尾插入 |
i | 光标前插入 |
I | 行首插入 |
f{char} | 移动光标至字符位置(;下一个 ,上一个) |
F{char} | 向前移动光标至字符位置(;下一个 ,上一个) |
t{char} | 移动光标至字符位置的临近字符(;下一个 ,上一个) |
T{char} | 向前移动光标至字符位置的临近字符(;下一个 ,上一个) |
* | 查找相同单词并跳转(n N) |
gg | 移动至缓冲区首行行首 |
G | 移动至缓冲区末行行首 |
{num}G | 移动至指定行号行首 |
:{num} | 移动至指定行号行首 |
H | 移动至屏幕行首行行首 |
M | 移动至屏幕行中行行首 |
L | 移动至屏幕行末行行首 |
标记跳转
命令 | 解释 |
---|---|
m{a-z} | 标记位置(缓冲区局部标记) |
m{A-Z} | 标记位置(全局可见) |
‘{a-z,A-Z} | 跳转至标记所在行 |
`{a-z,A-Z} | 跳转至标记准确位置 |
`` | 返回跳转之前的位置 |
`. | 跳转至上次修改的地方 |
`^ | 跳转至上次插入的位置 |
`[ | 跳转至上次修改或复制的起始位置 |
`] | 跳转至上次修改或复制的结束位置 |
`< | 跳转至上次高亮选区的起始位置 |
`> | 跳转至上次高亮选区的结束位置 |
删除
命令 | 解释 |
---|---|
x | 删除当前字符 |
dd | 删除整行 |
s | 删除当前字符并进入插入模式 |
cw | 删除至词尾并进入插入模式 |
cW | 删除至字串尾并进入插入模式 |
cc | 删除当前行并进入插入模式 |
caw | 删除单词及尾部空格并进入插入模式 |
ciw | 删除单词并进入插入模式 |
ciW | 删除至字串尾并进入插入模式 |
caW | 删除至字串尾及尾部空格并进入插入模式 |
cap | 删除当前段落及尾部空格并进入插入模式 |
cip | 删除当前段落并进入插入模式 |
cis | 删除当前句并进入插入模式 |
cas | 删除当前句以及尾部空格并进入插入模式 |
C | 删除当前字符至行尾的内容并进入插入模式 |
cG | 删除至缓冲区末尾并进入插入模式(以行为单位) |
cgg | 删除之缓冲区首行并进入插入模式(以行为单位) |
c$ | 删除至行尾并进入插入模式 |
c0 | 删除至行首并进入插入模式 |
d$ | 删除至行尾 |
d0 | 删除至行首 |
dw | 删除至下一单词词首 |
db | 删除至当前单词词首 |
de | 删除至词尾 |
daw | 删除当前单词及两侧空格 |
dap | 删除当前段落 |
dG | 删除至缓冲区末尾(以行为单位) |
dgg | 删除至缓冲区首行(以行为单位) |
<ctrl-h> | 插入模式删除前一个字符 |
<ctrl-w> | 插入模式删除前一个单词 |
<ctrl-u> | 插入模式删除至行首 |
<ctrl-y> | 光标上移一行 |
<ctrl-e> | 光标下移一行 |
<ctrl-u> | 光标上移半屏 |
<ctrl-d> | 光标下移半屏 |
<ctrl-b> | 光标上移一屏 |
<ctrl-f> | 光标下移一屏 |
复制剪切粘贴
命令 | 解释 |
---|---|
y | 复制当前字符 |
yy | 复制当前行 |
x | 剪切当前字符 |
dd | 剪切当前行 |
daw | 剪切当前单词(包括词尾空格) |
diw | 剪切当前单词(不包括词尾空格) |
daW | 剪切到字串尾的内容(包括字串尾空格,包括当前单词) |
diW | 剪切到字串尾的内容(不包括字串尾空格,包括当前单词) |
dw | 剪切当前字符到词尾的内容 |
dW | 剪切当前字符到字串尾的内容 |
dis | 剪切当前句的内容(不包括句尾空格) |
das | 剪切当前句的内容(包括句尾空格) |
dip | 剪切当前段的内容(不包括段尾空格) |
dap | 剪切当前段的内容(包括词尾空格) |
D | 剪切当前字符至行尾的内容 |
p | 粘贴至下一行(光标自动移动至粘贴行行首) |
gp | 粘贴至下一行(光标自动移动至粘贴行下一行行首) |
P | 粘贴至上一行(光变移动至粘贴行行首) |
gP | 粘贴至上一行(光标移动至粘贴行下一行行首) |
<ctrl-r>{reg} | 插入模式从{reg}中粘贴 |
<ctrl-r>={运算}<cr> | 插入模式插入运算寄存器的计算结果 |
"{reg}y | 普通模式复制到{reg} |
"{reg}p | 普通模式从{reg}粘贴 |
寄存器
命令 | 解释 |
---|---|
“ | 无名寄存器(缓存最后一次操作内容) |
0-9 | 数字寄存器(缓存最近操作内容,0为复制专用寄存器,1-9为剪切寄存器并动态存放) |
- | 行内寄存器(缓存行内删除内容) |
a-z | 具名寄存器(指定时使用,指定A-Z时直接在a-z之后追加) |
% # . : | 只读寄存器(当前文件名、轮换文件名、最近插入文本、最近操作命令) |
= | 表达式寄存器(执行表达式命令) |
* + ~ | 选择及拖拽寄存器(X11 PRIMARY剪切板、X11 CLIPBOARD剪切板、拖拽文本) [注:win和mac系统不区分*与+寄存器] |
_ | 黑洞寄存器(不缓存操作内容,用于删除) |
/ | 搜索寄存器(缓存最近的搜索的内容) |
其他
命令 | 解释 |
---|---|
. | 重复上次命令 |
u | 撤销 |
U | 整行撤销 |
<ctrl-r> | 撤销撤销 |
= | 自动缩进 |
< > | 更改缩进 |
<G >G | 更改缩进至缓冲区末尾 |
{num}<ctrl-a> | 后面的数值+{num} |
{num}<ctrl-x> | 后面的数值-{num} |
esc <ctrl-[> | 返回普通模式 |
<ctrl-o> | 插入模式下进入插入-普通模式(执行完一次普通模式命令后进入插入模式) |
zz | 重绘屏幕(使当前行显示在屏幕正中) |
<ctrl-v>{字符编码}<cr> | 插入模式利用{字符编码}输入字符 |
<ctrl-v>U{超三位字符编码}<cr> | 插入模式利用{超三位字符编码}输入字符 |
<ctrl-k>{char1}{char2} | 插入模式利用二合字母插入非常用字符 |
r | 普通模式替换当前字符 |
R | 普通模式连续替换 |
gr | 普通模式虚拟替换当前字符(按位置替换) |
gR | 普通模式连续虚拟替换(按位置替换) |
大小写转换
命令 | 解释 |
---|---|
~ | 转换当前字符的大小写 |
g~~ | 转换当前行的大小写 |
u | 可视模式下转换为小写 |
U | 可视模式下转换为大写 |
g~ | 将当前选中文本转换为大小写 |
gu | 将当前选中的文本转换为小写 |
gU | 将当前选中的文本转换为大写 |
guu | 当前行转换为小写 |
gUU | 当前行转换为大写 |
guw | 当前单词转换为小写 |
gUw | 当前单词转换为大写 |
可视模式
命令 | 解释 |
---|---|
v | 激活可视模式 |
V | 激活面向行的可视模式 |
<ctrl-v> | 激活面向块的可视模式(可以实现多行注释) |
viw | 选中当前单词 |
viW | 选中当前字串 |
vis | 选中当前句 |
vib | 选中当前块 |
vip | 选中当前段落 |
vaw | 选中当前单词(包括尾部空格) |
vaW | 选中当前字串(包括尾部空格) |
vas | 选中当前句(包括尾部空格) |
vab | 选中当前块(包括尾部空格) |
vap | 选中当前段落(包括尾部空格) |
vit | 选中<{char}></{char}>中间内容 |
vi( | 选中()中间内容 |
vi{ | 选中{}中间内容 |
vi< | 选中<>中间内容 |
vi[ | 选中[]中间内容 |
vi’ | 选中’’中间内容 |
vi” | 选中””中间内容 |
vat | 选中<{char}></{char}>整体内容 |
va( | 选中()整体内容 |
va{ | 选中{}整体内容 |
va< | 选中<>整体内容 |
va[ | 选中[]整体内容 |
va’ | 选中’’整体内容 |
va” | 选中””整体内容 |
gv | 重选上次高亮选区 |
o | 切换选取活动端 |
查找替换
查找 | 解释 |
---|---|
/{chars} | 正向查找(n下一个N上一个) |
?{chars} | 方向查找(n下一个N上一个) |
gn gN | 查找之后执行命令,跳转至匹配并进入可视模式并选中匹配 |
/ ? | 重新执行上次匹配 |
/ ?{up} {down} | 浏览查找记录 |
/e | 执行查找并将光标跳转至匹配末尾 |
\v | very magic模式(除下划线、字母、数字外均需要转义) |
\V | very nomagic模式(只用反斜杠需要转义)《正向查找转义/反向查找转义?》 |
\c | 不区分大小写 |
\C | 强制区分大小写 |
:noh | 查找后执行命令,取消高亮 |
元字符 | 解释 |
---|---|
() | 特殊,添加到临时仓库,使用\1 \2 \3进行引用 |
\zs \ze | 特殊,查找范围内匹配起始和匹配结束标识 |
<> | 位置,单词边界 |
^ $ | 位置,匹配行首和行尾 |
* | 数量,0-任意个字符 |
\+ | 数量,1-任意个字符 |
\? | 数量,0-1个字符 |
\{n,m} | 数量,n-m个字符 |
\{n} | 数量,n个字符 |
\{n,} | 数量,n-任意个字符 |
\{,m} | 数量,0-m个字符 |
. | 匹配,通配符 |
[^] | 匹配,通配符 |
[{char}{char}] | 匹配,任意一个{char} |
[^{char}{char}] | 匹配,除{char}之外的字符 |
[^{char}{char}]* | 匹配,除{char}之外的多个字符《为什么*》 |
\d | 匹配,[0-9] |
\D | 匹配,[^0-9] |
\x | 匹配,[0-9A-Fa-f] |
\X | 匹配,[^0-9A-Fa-f] |
\l | 匹配,[a-z] |
\L | 匹配,[^a-z] |
\u | 匹配,[A-Z] |
\U | 匹配,[^A-Z] |
\w | 匹配,[0-9A-Za-z_] |
\W | 匹配,[^0-9A-Za-z_] |
\t | 匹配,tab字符 |
\s | 匹配,空白字符 |
\S | 匹配,非空白字符 |
替换 | 解释 |
---|---|
: s/{chars}/{srtings} | 执行一次替换 |
: s/{chars}/{strings}/g | 执行一行替换(x轴拓展) |
:%s/{chars}/{strings}/g | 执行全局替换(x轴y轴拓展) |
g& | 重复执行上次替换,重新限定范围为% |
:&& | 对当前行执行上次替换 |
g | 标志位,在全局范围内执行 |
n | 标志位,抑制正常的替换动作 |
& | 标志位,使用上次替换时的标志位 |
c | 标志位,修改之前需要确认 y替换此处匹配 n忽略此处匹配 q退出替换过程 l替换此处匹配后退出 a替换此处之后所有匹配 e屏蔽错误提示 |
:%s//{strings}/g | 常用,使用上次搜索结果替换查找域 |
:%s/{chars}//g | 常用,默认使用空格替换{chars} |
:%s/{chars}//gn | 常用,显示匹配个数 |
\r | 替换域,插入换行符 |
\t | 替换域,插入制表符 |
\t | 替换域,插入反斜杠 |
\\ | 替换域,插入反斜杠 |
\1 \2 \3 | 替换域,插入子匹配 |
\0 | 替换域,插入匹配模式所有内容 |
& | 替换域,插入匹配模式所有内容 |
~ | 替换域,调用上次的替换域 |
\={vim script} | 替换域,将表达式结果作为替换域 |
自动补全
命令 | 解释 |
---|---|
<ctrl+n> | 普通关键字(从前向后查找) |
<ctrl+p> | 普通关键字(从后向前查找) |
<ctrl+x><ctrl+n> | 当前缓冲区关键字(从前往后开始查找,可以连续使用) |
<ctrl+x><ctrl+p> | 当前缓冲区关键字(从后往前开始查找,可以连续使用) |
<ctrl+x><ctrl+i> | 包含文件关键字 |
<ctrl+x><ctrl+]> | 标签文件关键字 |
<ctrl+x><ctrl+k> | 字典查找 |
<ctrl+x><ctrl+l> | 整行补全(可以连续使用) |
<ctrl+x><ctrl+f> | 文件名补全 |
<ctrl+x><ctrl+o> | 全能补全 |
<ctrl+n> | 菜单交互,使用下一匹配项 |
<ctrl+p> | 菜单交互,使用上一匹配项 |
{up}{down} | 菜单交互,选择上一下一匹配项 |
<ctrl+y> | 菜单交互,确认使用当前匹配项 |
<ctrl+e> | 菜单交互,退出自动补全 |
<ctrl+h> | 菜单交互,从当前匹配项中删除一个字符 |
<ctrl+l> | 菜单交互,从当前匹配项中增加一个字符 |
文件操作
命令 | 解释 |
---|---|
:wq | 保存并退出 |
:q! | 放弃更改并退出 |
:e! | 放弃更改恢复到上次保存状态 |
:w{name} | 另存为 |
:r{name} | 读取文件 |
:r!{cmd} | 读取{cmd}返回值 |