在vim中,“g?”命令提供了什么功能

5m1hhzi4  于 2022-11-11  发布在  其他
关注(0)|答案(3)|浏览(160)

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

x3naxklr

x3naxklr1#

g?命令(键入:help g?可查看简要文档)实现了rot13算法,该算法将字母表中的每个字母向前或向后旋转13个位置。
我不知道它在今天有多普遍,但在Usenet上,它曾经是一种常见的对剧透进行编码的方式。例如,如果我正在写一篇文章,泄露了一些不是每个人都看过的东西的结尾,我可能会使用rot13对文章的一部分进行弱加密。这足以使它不可能被意外阅读(除非您已经有了大量的实践),但是如果您使用的新闻阅读器具有内置的rot13函数(大多数新闻阅读器都是这样),则很容易阅读。
例如:
假装这是一个扰流器。过滤器与rot13阅读它。
会变成
我是一个很好的朋友,我很喜欢你。
如果我不想读剧透,我可以忽略它。如果我想读它,我可以很容易地解密它。

k7fdbhmy

k7fdbhmy2#

我已经使用Vim 4年了,并且很早就了解了这个命令,但是,即使我非常清楚ROT 13是什么,我也 * 从来没有 * 发现g?的用途。
直到几周前,我需要在HTML原型中将一组具有唯一ID的<li>添加到<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>

在两个新的<li>id上执行g?i"之后:

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

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

nle07wnf

nle07wnf3#

如果您希望快速隐藏您在可见的vim缓冲区中键入的部分文本,它将非常有用。
例如,您在代码中放置的一些密码或令牌(但仅在必要时临时执行)。
也许你想邀请一个队友来看看你的代码,或者你工作的地方人们总是在你背后走动,这样你就可以旋转字符串,而字符串对他们来说是无用的(至少在一瞥中是这样)。它可能对非技术性的路人或短时间的暴露时间最有效。
请记住,它不旋转数字,为了安全起见,如果它可以采取旋转大小,那就更好了。
当你解决一个有rot13挑战的CTF时,它也会变得有用。

相关问题