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 中创建和使用宏,可以大大提高您的编辑效率。若有任何疑问或需要进一步的帮助,请随时询问!
迷茫的人生,需要不断努力,才能看清远方模糊的志向!