Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
lmpythw-zh
提交
01d4c796
L
lmpythw-zh
项目概览
OpenDocCN
/
lmpythw-zh
8 个月 前同步成功
通知
0
Star
18
Fork
5
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
lmpythw-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
01d4c796
编写于
8月 16, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ex48
上级
0b3524f3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
35 addition
and
0 deletion
+35
-0
ex48.md
ex48.md
+35
-0
未找到文件。
ex48.md
0 → 100644
浏览文件 @
01d4c796
# 练习 48:`ed`
> 原文:[Exercise 48: ed](https://learncodethehardway.org/more-python-book/ex48.html)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
如果你的流程生效了,那么你应该能够专注于较长的项目,一次几个星期。在这个项目中,你的目标是创建尽可能精确的
`ed`
命令副本。这个练习的目标是不要有创意,而是要系统地实现另一个软件的精确副本。将其看作一个伪造的练习。你会做出一些非常好的东西,你可以用它代替原来的
`ed`
,没有人会知道。
这项工作是创建
`ed`
命令的“代码大师副本”,尽可能准确,也就是说,你的测试套件应该对真正的
`ed`
和你的版本运行同一脚本,来比较输出。这就像你在学习算法时所做的“代码大师副本”练习,除了你复制现有软件的行为,而不是试图记住它。这个流程是相似的,但你可以使用测试套件帮助它更快地进行。
## 挑战练习
`ed`
工具,是现存的最早的 Unix 文本编辑器之一,坦率地说,它非常糟糕。实际上我无法想像有人使用
`ed`
编辑文本,因为它是目前最受用户讨厌的软件之一。如果你无法想象,在 Unix 的黑暗时期,有多少计算机出了故障,制作一个
`ed`
的副本会让你见识一下。
`ed`
的一些概念是,虽然它支持脚本,但它最初是以交互方式使用的。就像用于文本文件的 MUD。你首先运行
`ed`
,它以命令模式启动,让你可以使用命令修改文本。当你执行需要输入的命令时,它将进入输入模式,直到该命令结束。你也必须知道行的地址来编辑它。这似乎是一种痛苦,但与其他文字编辑器相比,这是独角兽的魔法。
为了完成你的
`ed`
副本,你需要严重依赖于
[
Python 的`re`库
](
https://docs.python.org/2/library/re.html
)
,来使用正则表达式。我们在练习 31 中使用了这个库,所以通常你应该熟悉它和 RegEx。
我还建议你,在 45 分钟的会话内,尝试使用
`ed`
,来你的
`ed`
项目编写一些代码。这样做的痛苦将会教你如何复制它。
除此之外,你将需要阅读
`man ed`
页面来获取命令的基础知识,并可能会观看它的使用教程。一个很好的起步就是,在线寻找不同的示例脚本,并尝试将它们作为你的第一个测试用例。
> 注
> 我会给你一个线索,你需要使用 FSM 来处理`ed`命令的模态本质。
## 研究性学习
+
查找 GNU
`ed`
的源代码,即使你不懂得 C 语言,也看一看它。
+
将你的
`ed`
实现变成一个模块,然后可以在其他项目中使用。你需要将其用于以后的练习。
+
永远不要再做这样的软件,除非你就是无聊了。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录