vim入门(下)
vim不仅仅是一个文本编辑工具,更是一门语言。今天要记录一下vim作为一门语言来进行编辑以及编写宏来执行重复任务。
把vim当作一门语言来进行文本编辑
vim作为一门语言,包含了表示要执行动作的动词、限制执行范围的形容词、限制执行次数的数字以及描述被执行对象的名词。
表示要执行动作的动词包括:
按键 | 释义 | 动词属性 |
---|---|---|
v | 选择可视模式的范围 | 及物动词 |
c | 修改字符,进入插入模式 | 及物动词 |
d | 删除 | 及物动词 |
y | 复制 | 及物动词 |
x | 删除字符 | 非及物动词 |
i | 在光标前插入,进入插入模式 | 非及物动词 |
a | 在光标后插入,进入插入模式 | 非及物动词 |
p | 粘贴 | 非及物动词 |
n N | 下一个或者上一个/或?搜索的结果 | 非及物动词 |
限制执行范围的形容词包括:
按键 | 释义 |
---|---|
i | 范围之内(不包括边界) |
a | 周围以内(包括边界) |
t | 直到某个字符为止(不包括此字符) |
f | 直到某个字符为止(包括此字符) |
/ | 向后搜索,直到找到特定字符串或者正则表达式 |
? | 向前搜索,直到找到特定字符串或者正则表达式 |
描述被执行对象的名词:
按键 | 释义 |
---|---|
w | 单词 |
s | 句子 |
b | 块 |
p | 段落 |
t | tag(适用于html及xml) |
G | 直到最后一行 |
nG | 直到第n行 |
gg | 直到第一行,等于1G |
0 | 当前行的第一个字符 |
$ | 当前行的最后一个字符 |
示例说明:
非及物动词单独使用:
按键组合 | 释义 |
---|---|
x | 删除当前字符 |
p | 将此前复制的内容粘贴到当前位置 |
数字和非及物动词一起使用:
按键组合 | 释义 |
---|---|
8x | 从当前为止开始删除8个字符 |
3k | 向上移动3行 |
及物动词和名词一起使用:
按键组合 | 释义 |
---|---|
dw | 删除当前单词 |
cw | 删除当前单词并进入插入模式 |
及物动词、形容词以及名词一起使用:
按键组合 | 释义 |
---|---|
diw | 删除当前单词 |
ciw | 删除当前单词并进入插入模式 |
cis | 删除当前句子并进入插入模式 |
ci" | 删除双引号之间的内容并进入插入模式 |
c/foo | 删除直到下一个foo之前的内容并进入插入模式 |
ct3 | 删除直到下一个字符3之前的内容(不包括3)并进入插入模式 |
cf3 | 同上,但是包括3 |
vap | 选择整个段落并进入可视模式 |
使用宏执行重复任务
录制以及重复使用宏的总体步骤如下:
- 按下q,然后按下任意一个字幕作为宏名称。宏录制开始。
- 在vim中进行任何编辑及操作,所有这些将被录制。
- 再次按下q来停止录制。
- 按下@以及宏名称来执行宏。
- 多次执行宏的按键组合为:N@以及宏名称,其中N是数字,为宏重复执行的次数。
宏应用示例:
假如我们有一个文本文件,里面是要创建的函数名,我们要把根据这些函数名创建含一个没有返回值并且参数为空的函数。
从foo变成void foo(){}
打开文本文件以后,按照如下步骤操作:
- 按下qa开始录制宏(a为宏名称)
- 编写宏内容:
- 按下ESC、I,从当前行前面开始插入。
- 插入"void ",然后按下ESC、A,从行后开始插入。
- 插入"(){}",然后按下ESC、j跳转到下一行。
- 再次按下q结束宏录制。
- 按下99(假设有100个函数名)@a,将宏执行99次。