12

作为一名初级程序员,我最近一直在 vimgolf 上练习 vim,看到命令“g?” 被有效地用于将多行“Ivm”转换为“Vim”。我知道这会将每个字母向右移动 13 次,但不明白这将如何证明有用,除非在这样的特殊情况下。

4

2 回答 2

20

g?命令(:help g?用于简要文档的类型)实现了该rot13算法,该算法将每个字母在字母表中向前或向后旋转 13 位。

我不确定它今天的使用频率如何,但在 Usenet 上,它曾经是编码剧透的常用方法。例如,如果我正在写一篇文章,它泄露了不是每个人都看过的东西的结尾,我可能会用它rot13来对文章的一部分进行弱加密。这足以防止意外阅读(除非您有很多练习),但如果您使用具有内置rot13功能的新闻阅读器,则易于阅读 - 就像大多数人一样。

例如:

假装这是剧透。使用 rot13 过滤以读取它。

会成为

Cergraq guvf vf n fcbvyre。Svygre jvgu ebg13 gb ernq vg。

如果我不想看剧透,我可以忽略它。如果我确实想阅读它,我可以很容易地解密它。

于 2014-08-10T01:54:03.617 回答
12

我使用 Vim 已经 4 年了,很早就知道了这个命令,但是,即使我非常清楚 ROT13 是什么,我也从来没有发现g?.

直到几周前,我需要在 HTML 原型 中添加一组<li>具有唯一 ID 的...</p><ul>

出发点:

<ul>
    <li id="lorem">foo</li>
    <li id="ipsum">foo</li>
</ul>

复制两者后<li>

<ul>
    <li id="lorem">foo</li>
    <li id="ipsum">foo</li>
    <li id="lorem">foo</li>
    <li id="ipsum">foo</li>
</ul>

g?i"两个 new之后<li>id

<ul>
    <li id="lorem">foo</li>
    <li id="ipsum">foo</li>
    <li id="yberz">foo</li>
    <li id="vcfhz">foo</li>
</ul>

那里!我发现了g?在实际“编程”中的实际用途!庆典!!!

于 2014-08-10T07:57:20.223 回答