Skip to main content

Normal Mode

Redo

.

微型宏: 重复上一次(插入命令 至 <Esc>)录制动作

;

重复 t/T/f/F

@

命令作用
@{register}重复寄存器中的宏命令
@:重复任意 Ex 命令
@@重复@命令

:&

重复:substitute

Undo

目的操作重复回退
做出一个修改{edit}.u
在行内查找下一指定字符f{char}/t{char};,
在行内查找上一指定字符F{char}/T{char};,
在文档中查找下一处匹配项/pattern<CR>nN
在文档中查找上一处匹配项?pattern<CR>nN
执行替换:s/target/replacement&u
执行一系列修改qx{changes}q@xu

Compound

复合命令等效的长命令
Cc$
scl
S^c
I^i
A$a
oA<CR>
Oko

Edit

Operator and Motion

操作符命令 + 动作命令 (范围), Operator + {Motion}:

:h operator. :h :map-operator.

  • 操作符命令: 基本编辑命令
命令作用
c修改
d删除
y复制到寄存器
g~反转大小写
gu转换为小写
gU转换为大写
>增加缩进
<减小缩进
=自动缩进
!使用外部程序过滤 {motion} 所跨越的行
  • 动作命令: a(all)/i(in)/t(til).

e.g. $/2l/aw/ap/patterns.

  • 模式串: /patterns.
  • 0/$: 行首/尾.
  • 文本对象: i/a.
  • 分隔符文本对象 (separator text objects).
分隔符文本对象选择区域
a)ab一对圆括号 (parentheses)
i)ib圆括号 (parentheses) 内部
a}aB一对花括号 {braces}
i}iB花括号 {braces} 内部
a]一对方括号 [brackets]
i]方括号 [brackets] 内部
a>一对尖括号 <angle brackets>
i>尖括号 <angle brackets> 内部
a'一对单引号 'single quotes'
i'单引号 'single quotes' 内部
a"一对双引号 "double quotes"
i"双引号 "double quotes" 内部
a`一对反引号 `backTicks`
i`反引号 `backTicks` 内部
at一对 XML 标签 <xml>tags</xml>
itXML 标签内部
  • 范围文本对象 (range text objects).
范围文本对象选择范围
iw当前单词
aw当前单词及一个空格
iW当前字串
aW当前字串及一个空格
is当前句子
as当前句子及一个空格
ip当前段落
ap当前段落及一个空行

Insert

复合命令等效的长命令
Cc$
scl
S^c
I^i
A$a
oA<CR>
Oko

Register

{register}{operator}{motion} / <C-r>{register}:

寄存器符号作用使用范例
""无名寄存器e.g. yiw / diw
"a ~ "z有名寄存器e.g. "ayiw
"0复制专用寄存器e.g. yiw + diw + "0p
"_黑洞寄存器/有去无回寄存器e.g. "_diw
"+系统剪贴板寄存器e.g. "+p / InsertMode <C-r>+
"*上次高亮文本寄存器e.g. "+p / InsertMode <C-r>*
"=表达式寄存器e.g. "+p / InsertMode <C-r>=
"%当前文件名
"#轮换文件名
".上次插入的文本
":上次执行的 Ex 命令
"/上次查找的模式

:reg {register} 显示寄存器内容

删除

{number}{register}d/s/x{motion}.

复制

{number}{register}y{motion}.

粘贴

{number}{register}p{motion}.

替换

:h gU

  • gU{motion}: 小写转大写 e.gUaw.
  • r{char}: 替换光标所在字符.
  • gr{char}.
  • R/gR 进入替换模式.

缩进

>{motion}

e.g. >G: 缩进全文

={motion}

gg=G 自动缩进全文

格式化(Formatting)

={motion} 在 VSCode 中会调用 formatting 命令, 可以快速格式化代码。

注释

\\{motion}

vim-commentary 插件

  • \\\ 注释行.
  • \\ap 注释段落.

历史记录

  • u: 回退命令.
  • <C-r>: 前进命令.

Jump

基本域

命令光标动作
%跳转至下一个配对的范围符号
j向下移动一个实际行
gj向下移动一个屏幕行
k向上移动一个实际行
gk向上移动一个屏幕行
w正向移动到下一单词的开头
b反向移动到当前单词/上一单词的开头
e正向移动到当前单词/下一单词的结尾
ge反向移动到上一单词的结尾
0移动到实际行的行首
g0移动到屏幕行的行首
$移动到实际行的行尾
g$移动到屏幕行的行尾
^移动到实际行的第一个非空白字符
g^移动到屏幕行的第一个非空白字符
_first char of line
g_last char of line
Hjump to top of screen
Mjump to middle of screen
Ljump to bottom of screen
ztcurrent line to top of screen
zzcurrent line to middle of screen
zbcurrent line to bottom of screen
<C-u>/<C-d>翻半页
<C-b>/<C-f>翻半页
<C-o>跳转到较老位置
<C-i>跳转到较新位置
g;跳转到较早修改位置
g,跳转到较新修改位置
gdjump to definition
gijump to last insert position
#jump to previous same word
*jump to next same word

:set path?

查看'path'值

命令作用
[count]G跳转到指定的行号
/pattern<CR> /?pattern<CR> n N跳转到下一个/上一个模式出现之处
%跳转到匹配的括号所在之处
( )跳转到上一句/下一句的开头
{ }跳转到上一段/下一段的开头
gf跳转到光标下的文件名
gg文首
G文尾
<N>ggjump to line
<N>%jump to percent of file
<C-]>跳转到光标下关键字的定义之处
`{mark}跳转到一个位置标记

标记

m{alpha} 标记当前光标处, 标记名为 alpha.

位置标记跳转到
`{alpha}自定义标记处
``当前文件中上次跳转动作之前的位置
`.上次修改的地方
`^上次插入的地方
`[上次修改或复制的起始位置
`]上次修改或复制的结束位置
`<上次高亮选区的起始位置
`>上次高亮选区的结束位置

拼写检查

命令作用
]s跳到下一处拼写错误
[s跳到上一处拼写错误
z=为当前单词提供更正建议
zg把当前单词添加到拼写文件中
zw把当前单词从拼写文件中删除
zug撤销针对当前单词的 zgzw 命令

Character

命令光标动作
w正向移动到下一单词的开头
b反向移动到当前单词/上一单词的开头
e正向移动到当前单词/下一单词的结尾
ge反向移动到上一单词的结尾
;重复/f/F/t/T
,撤销/f/F/t/T

<C-a>/<C-x>: 查找数字,递增/减数字

Pattern

/pattern<CR>
?pattern<CR>
n
N

原字符

原字符作用范例
\c忽略大小写
\C大小写敏感
\v开启 very magic 模式(可省略转义符)
<>\v 模式下的单词定界符
%()分组符/\v%(And|D)rew
\V开启原义模式(可省略转义符):
\w匹配单词类字符(alpha,number,_)
\W匹配非单词字符
\x匹配十六进制数[0-9a-fA-F]
\s匹配空白符/换行符
\zs界定一个匹配的开始
\ze界定一个匹配的结束

Flags

置于 patterns 末尾:

Flags作用
/g全局
/e光标至匹配词末尾
/c确认或拒绝每一处修改
/n会抑制正常的替换行为,只报告本次 substitute 命令匹配的个数
/&重复上次 flags