【问题标题】:What functionality does the "g?" command provide in vim“g”有什么功能? vim 中提供的命令
【发布时间】:2014-08-10 01:38:01
【问题描述】:

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

【问题讨论】:

标签: vim rot13


【解决方案1】:

g? 命令(键入 :help g? 以获得简短文档)实现了 rot13 算法,该算法将字母表中的每个字母向前或向后旋转 13 位。

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

例如:

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

会变成

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

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

【讨论】:

  • 如何使用 vim 的内置 rot13 功能。 Ex1: 1. v 进入可视模式 2. 选择您的文本 3. g? 将 rot13 应用于此文本。 Ex2 - 做整个缓冲区:ggVGg?(翻译:gg 开始,V 线性视觉选择模式,G 结束,g? 应用 rot13)。
  • 详细说明,@TrevorBoydSmith 的评论 g? 是一个动词,因此它可以应用于 words 或 paragraphs 或其他任何东西。此功能不限于视觉模式。
【解决方案2】:

我使用 Vim 已有 4 年了,并且很早就了解了该命令,但即使我非常了解 ROT13 是什么,我从未找到g? 的用途。 p>

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

起点:

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

复制两个&lt;li&gt;后:

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

g?i"之后的两个新&lt;li&gt;ids:

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

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

【讨论】: