合理地在 Emacs 中使用分页符
今天我想说一说 GNU Emacs 中 页 的概念, 我是怎么使用页的,以及为什么我要使用页。
在我的经验看来页的作用经常被 Emacs 用户所忽视, 原因可能是都觉得它太丑了吧, 不过我会告诉你一个 package 可以美化它。 同时,我还会推荐你一个 package 可以实现很方便的在各页之间跳转。
A Crash Course Introduction to Pages
Emacs 中的 页
指的是那些被 form-feed 字符(即^L,或者说 Ctrl+L 字符)所分割的那些文本。 在 Emacs 中可以按下 C-q C-l
来输入。 其中 C-q
是告诉Emacs直接插入你接下来输入的键。
正常情况下按下 C-l
会运行命令 recenter-top-bottom
。 因此我们不能通过直接按下 C-l
的方式插入form-feed字符。
不过 C-q C-l
则是告诉Emacs忽略 C-l
所绑定的命令,直接插入字面量^L, 而这个字符正是我门用来将文本分割成页的字符。
我们可以通过 C-x [
和 C-x ]
来向上/向下翻页。 他们对应的命令分别是 backward-page
和 forward-page
。
另外,按下 C-x C-p
可以选中我们当前页的所有内容。
关于页的介绍就差不多了。 下面来说说帮助我们在页之间跳转的那些 package。
Why Use Pages?
我喜欢将内容按页分成几个章节,尤其在编程时更是如此。
比如我的工作室最近刚编写了一个名为 Chance 的库。 其源代码 就用分页符分成了几个部分,当然,这你在 Github 上是看不出来的;这些分页符看起来就像是一个空行而已,不行你可以看看第228行。
不过在Emacs上,分页符可以看起来像是这样的。
借助 Steve Purcell 那超赞的 page-break-lines package可以让丑陋的^L字符显示成这些漂亮的横线。
库 Chance
使用了 LDoc 来生成文档— LDoc 类似于 Javadoc 的 Lua 版本。 在 LDoc 中,我们可以使用 @section
标注来将代码组织成相关的几块。
我在每个创建新 @section
的注释前都插入一个分页符,这样一来,源代码的各个块就与 Emacs 的各个页一一对应起来了。
如此,我就可以通过页在源代码的各个块之间跳转了。 我当然可以用前面提到过的 C-x [
/ C-x ]
来跳转,但其实还有更好的方案。
A Nicer Way to Navigate Pages
我觉得用 helm-pages 在页之间跳转挺不错的。 当我在 Chance
的源代码中调用 helm-pages
后,看到的结果是这样的:
它会列出每页的第一行内容,这样可以很容易的在代码的各部分之间进行跳转。
~Chance~
的测试案例 也一样用分页符划分成了几部分, 用 helm-pages
来浏览的效果也不错。 而且每个page的第一行恰好是一个调用 describe()
的语句,这条语句说明了这部分代码测试的内容(我用 Busted 来进行单元测试)。
Conclusion
是的,这是一篇很多的文章,不过也确实没什么好说的了。 希望本文能告诉你如何将代码划分出多个页,同时如何在这些页之间进行快速的跳转。
如果你从未用过页,那么请尝试一下,也许你会像我一样,发现这真是组织文件内容的好工具。
强烈推荐阅读此文 info by Artur Balabarba on page-breaks。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论