什么功能" g?"命令在vim中提供

时间:2014-08-10 01:38:01

标签: vim rot13

作为一名初学程序员,我最近一直在vimgolf上练习vim并看到命令" g?"被有效地用来切换许多“Ivm'成为Vim'。据我所知,这会将每个字母字母向右移动13次,但不理解这将如何证明有用,除非在这些特殊情况下。

2 个答案:

答案 0 :(得分:16)

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

我不确定它今天有多常用,但在Usenet上它曾经是编码剧透的常用方法。例如,如果我正在撰写一篇文章,告诉我不是每个人都看过的内容的结尾,我可能会使用rot13对文章的某些部分进行弱加密。这足以让你不小心阅读(除非你有很多练习),但如果你使用的是具有内置rot13功能的新闻阅读器,则很容易阅读 - 因为大部分都是做。

例如:

  

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

会变成

  

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

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

答案 1 :(得分:10)

我4年来一直在使用Vim并且很早就学会了这个命令但是,即使我非常清楚ROT13是什么,我永远不会找到g?的用途。

直到几周前我需要在HTML原型中向<li>添加一堆<ul>个唯一ID ...

起点:

<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" <li>的{​​{1}}之后id

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

有!我在实际的“编程”中找到了g?的实际用途!庆典!!!