Vim 中创建和使用宏的练习指南
这是关于在 Vim 中创建和使用宏的另一份练习指南,目标是帮助您熟悉宏的使用和实践。以下是详细的步骤和说明。
Vim 宏练习指南
目标
通过创建和使用宏来练习编辑任务。
操作步骤
- 打开文件
- 启动命令行并导航到文件所在的目录。
- 假设文件在
Downloads/vimclass目录中,使用以下命令:cd Downloads cd vimclass vim macros-practice.txt
练习 1:更新旧的 Python 代码
目标:将旧的 Python 代码从 print "Macros are very fun!" 更新为 print("Macros are very fun!")。
- 将光标移动到行
print "Macros are very fun!"。 - 录制宏到 "a" 寄存器:
qa - 使用
0将光标移到行首。 - 使用
f<SPACE>定位到空格。 - 使用
r(替换空格为开括号。 - 使用
A)在行末添加闭括号,按<ESC>返回正常模式。 - 使用
j移动到下一行。 - 输入
q停止录制宏。
检查宏内容:
:reg a
应该显示 0f r(A)^[j。
执行宏:
- 使用
@a在下一行执行宏。 - 继续使用
@@重复宏直到所有打印语句被更新。
练习 2:从用户列表创建 Shell 脚本
目标:将用户列表转换为命令。
- 将光标移动到行
jason。 - 录制宏到 "b" 寄存器:
qb - 使用
yaw将用户名复制到默认寄存器。 - 使用
I进入插入模式并输入passwd -l,按<ESC>。 - 使用
A在行末进入插入模式并输入&& echo,按<ESC>。 - 使用
p粘贴用户名。 - 使用
a继续在行末输入>> locked_users.txt,按<ESC>。 - 使用
j移动到下一行。 - 输入
q停止录制宏。
检查宏内容:
:reg b
应该显示 yawIpasswd -l ^[A && echo ^[pa >> locked_users.txt^[j。
执行宏:
- 使用
@b在下一行执行宏,然后使用3@b在剩余行重复宏。
练习 3:规范化电话号码
目标:将电话号码从 2798265253 转换为 (279) 826-5253。
- 将光标移动到行
2798265253。 - 录制宏到 "p" 寄存器:
qp - 使用
I进入插入模式并输入(,按<ESC>。 - 使用
lll将光标移动到 9 的下方。 - 使用
a)并输入<SPACE>,按<ESC>。 - 使用
lll移动到 6 的下方。 - 使用
a-追加一个连字符,按<ESC>。 - 使用
j移动到下一行。 - 输入
q停止录制宏。
检查宏内容:
:reg p
应该显示 I(^[llla) ^[llla-^[j。
执行宏:
- 使用
:set nu启用行号,查看范围。 - 使用
Ctrl-f翻页到最后一行,执行:
:25,73 normal @p
练习 4:从日志文件提取重要数据
目标:提取时间戳、源 IP 地址和目标端口。
- 将光标移动到行
Jan 13 09:57:01。 - 录制宏到 "l" 寄存器:
ql - 使用
0将光标移到行首。 - 使用
tw定位到时间戳之后。 - 使用
dtS删除到 "SRC=" 的文本。 - 使用
dw删除 "SRC"。 - 使用
r,替换 "=" 为逗号。 - 使用
f<SPACE>移动到 IP 地址后。 - 使用
d/DPT<ENTER>删除到 "DPT=" 的文本。 - 使用
dw删除 "DPT"。 - 使用
r,替换 "=" 为逗号。 - 使用
f<SPACE>移动到端口号后。 - 使用
D删除剩余文本。 - 使用
j移动到下一行。 - 输入
q停止录制宏。
检查宏内容:
:reg l
应该显示 0twdtSdwr,f d/DPT^Mdwr,f Dj。
执行宏:
- 使用
@l在下一行执行宏,然后使用@@直到所有行格式正确。
练习 5:从多行数据中提取并合并为单行
目标:将三行数据转换为一行。
- 将光标移动到行
Country China。 - 录制宏到 "c" 寄存器:
qc - 使用
0移动到行首。 - 使用
dw删除 "Country"。 - 使用
j移动到下一行。 - 使用
dW删除数字。 - 使用
k移动回原行。 - 使用
P粘贴数字。 - 使用
r;替换空格为分号。 - 使用
j移动到下一行。 - 使用
2dd删除当前行和下一行。 - 输入
q停止录制宏。
检查宏内容:
:reg c
应该显示 0dwjdWkPr;j2dd。
执行宏:
- 使用
4@c重复宏格式化剩余数据。
练习 6:从 HTML 中提取数据
目标:将链接从 HTML 转换为纯文本。
- 将光标移动到包含
<a>的行。 - 录制宏到 "q" 寄存器:
qq - 使用
df@删除到并包括 "@"。 - 使用
f<定位到<。 - 使用
cf>替换</a>为换行,按<ENTER>。 - 输入
q停止录制宏。
检查宏内容:
:reg q
应该显示 df@f<cf>^M^[。
执行宏:
- 使用
@q执行宏,重复@@直到所有链接被提取。
退出 Vim
如果您想放弃更改以重新尝试练习,输入:
:q!<ENTER>
总结
通过这些练习,您将熟悉如何在 Vim 中创建和使用宏,可以大大提高您的编辑效率。若有任何疑问或需要进一步的帮助,请随时询问!
迷茫的人生,需要不断努力,才能看清远方模糊的志向!

浙公网安备 33010602011771号