1. 命令 command
非操作符命令
1.1 插入 INSERTION
i
在光标所在处进入插入模式 操作: i 输入字符 I
在光标所在行,行首进入插入模式 操作: I 输入字符
注意: 按下
将进入NORMAL模式, 或取消不想要的和部分完成的命令。
1.2 另开新行 Open
o
在光标下方打开一行,并进入Insert模式
.O
在光标上方打开一行,并进入Insert模式
.
1.3 追加 Appending
a
在光标后追加字符 a 输入字符 A
在光标行尾追加字符 A 输入字符
i, I, a, A, o, O 相同点是:都会进入Insert模式,不同是:光标的位置不同。
1.4 替换 Replace
始终会保持在Normal模式,但光标会变为
_
输入r
后,光标会变成下划线,此时输入的字符会将当前字符替换,并立即返回Normal模式。
替换单字符: 替换光标所在字符 r 输入字符
持续替换: 进入Rplace,直至
1.5 粘贴 Paste
puts (pastes):通过
yy
ye
命令复制的内容、通过dd
dw
删除的内容等,都可以通过p
将其粘贴到其他位置。
在光标字符后,粘贴内容 p
1.6 搜索 Search
/<search phrase>
向下搜索 n 反向搜索 N
/ /目标字符串 n: 向下搜索,下一个 N: 反向搜索,上一个
? ?目标字符串 n: 反向搜索,上一个 N: 向下搜索,下一个
% 光标移动到 {
[
(
, 然后键入%
字符,光标会移动与之对应的 }
]
)
1.7 替换 Substitute
命令格式是:
:[range]s/{old-string|pattern}/{string}/[flags]
[range] 指定行范围,%
表示全文件1,10
表示1-10行'<,'>
可视模式选中范围
{old-string|pattern} 表示旧字符串,也可以使用正则
{string} 新字符串,
[flags] 标志,g
表示全局替换c
交互1,10
跨行可自由组合
- 单行内替换
:s/old/new 当前行,匹配到的第一个old
,替换为new
:s/old/new/g 当前行,匹配到的所有 old
,替换为new
- 跨行替换
:1,10s/old/new/g 1-10行, 匹配到的所有old
,替换为new
:’<,’>s/old/new/g 在可视模式选中的区域, 匹配到所有old
,全部替换为new
(操作步骤为:v
进入可视模式visual
, jkhl移动光标进行区域选择, :s/old/new/g
替换)。
- 全文件替换
%s/old/new/g 全文件替换
- 交互替换(c confirm确认)
:s/old/new/c 替换时会弹出确认对话框,每次替换前都会询问是否替换
- 正则表达式替换(有问题)
:s/$\d+$/[new-\1]/g
操作符 operator
删除 d
Delete 会将
[number]motion
的内容全部删除,并保持在Normal模式;
删除光标所在的一个字符 x
删除一个单词: 删除从光标到下一个字开头的中间内容 dw
删除一个单词: 删除从光标到当前字结尾的中间内容 de
删除从光标到当前行结尾的中间内容 d$
删除光标所在一整行内容 dd
向左删除5个字符 d5h
向右删除5个字符 d5l
删除光标所在行及以下10行内容 d10j 10dd
删除光标所在行至文件末尾内容 dG
删除光标所在行至文件开头内容 dgg
修改 c
Change 会将
[number]motion
的内容全部删除,并进入Insert模式;
删除从光标到下一个字开头的中间内容, 并进入Insert模式 cw
删除一个单词: 删除从光标到当前字结尾的中间内容, 并进入Insert模式 ce
删除从光标到当前行结尾的中间内容, 并进入Insert模式 c$
删除光标所在整行内容,并进入Insert模式, 并进入Insert模式 cc
向左删除5个字符, 并进入Insert模式 c5h 5ch
向右删除5个字符, 并进入Insert模式 c5l 5cl
删除光标所在行及以下10行内容, 并进入Insert模式 c10j 10cj 10cc
删除光标所在行至文件末尾内容, 并进入Insert模式 cG
删除光标所在行至文件开头内容, 并进入Insert模式 cgg
c是operator,i"是文本对象,表示 “ 在引号内( inside" )”
删除光标所在’‘内的所有内容, 并进入Insert模式ci'
删除光标所在"“内的所有内容, 并进入Insert模式ci"
删除光标所在{}内的所有内容, 并进入Insert模式ci{
删除光标所在[]内的所有内容, 并进入Insert模式ci[
删除光标所在()内的所有内容, 并进入Insert模式ci(
复制 y
yanks(copy)
复制光标所在的一个字符 y
复制从光标到下一个字开头的中间内容 yw
复制从光标到当前字结尾的中间内容 ye
复制从光标到当前行结尾的中间内容 y$
复制光标所在一整行内容 yy
向左复制5个字符 y5h 5yh
向右复制5个字符 y5l 5yl
复制光标所在行及以下10行内容 y10j 10yj 10yy
复制光标所在行至文件末尾内容 yG
复制光标所在行至文件开头内容 ygg
custom复制:按 v
进入Visual模式,再通过 hjkl
选择内容,再按 y
对内容进行复制,最后通过 p
在合适位置进行粘贴。