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

13
作为一名初学者程序员,最近我一直在练习vim命令,看到使用"g?"命令可以有效地将许多行的"Ivm"变成"Vim"。我知道这会将每个字母向右移动13次,但不明白这在除了像这样的特殊情况下有何用处。

2
http://en.wikipedia.org/wiki/ROT13 - Ismail Badawi
我用它来学习英语。我倾向于在一个文件中收集新的词汇、表达方式、成语等等。我用"g?"来"隐藏"那个单词的意思,因为我想通过看例子来推断出它的意思。 - Ali
3个回答

21
g? 命令(输入:help g?查看简要文档)实现了 rot13 算法,它将每个字母在字母表中向前或向后旋转13个位置。
我不确定今天它有多常用,但在 Usenet 上,它曾经是一种常见的编码剧透的方式。例如,如果我写一篇文章揭示了某些人还没看过的结局,我可能会使用 rot13 弱加密文章的一部分。这足以使其无法被意外地阅读(除非你有很多练习),但如果你使用一个内置 rot13 函数的新闻阅读器(大多数都有),就可以轻松阅读。
例如:

假装这是一个剧透。使用 rot13 过滤以阅读。

将变成

Pretenq guvf vf n fcbvyre. Svygre jvgu ebg13 gb ernq vg.

如果我不想阅读剧透,我可以忽略它。如果我想阅读它,我可以轻松解密它。

1
如何使用vim的内置rot13功能。示例1:1.v进入可视模式2.选择您的文本3.g?将rot13应用于此文本。示例2-对整个缓冲区执行:ggVGg?(翻译:gg转到开头,V行选择模式,G转到结尾,g?应用rot13)。 - Trevor Boyd Smith
具体来说,根据@TrevorBoydSmith的评论,“g?”是一个动词,因此它可以应用于单词(w)或段落(p)等。这个功能不仅限于可视化模式。 - K. Rhoda
谢谢,我来这里是因为我想知道为什么我要使用它而不是base64?或者为什么rot13会超越新奇之外的用途?但这很有道理! - BytePorter

13

我使用 Vim 已经4年了,并且早早就学会了那个命令,但是即使我非常清楚 ROT13 是什么,我也从来没有找到过使用 g? 的场合。

直到几周前,当我需要为 HTML 原型中的 <ul> 添加一堆带有唯一 ID 的 <li> 时...

起始点:

<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 的命名后:

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

太好了!我终于在实际“编程”中找到了使用g?的实用价值!庆祝一下!!!


0

在可见的vim缓冲区中,当您想要快速隐藏一些文本部分以避免旁观者时,它可能会很有用。

例如,您在代码中放置了一些密码或令牌(但只是临时的,必须这样做)。

也许您想邀请一个团队成员查看您的某些代码,或者您工作的地方经常有人在背后走动,因此您可以将字符串rot13编码,这对他们来说是无用的(至少一瞥)。 它可能最适合非技术路人或短暂曝光期。

请记住,它不会旋转数字,并且出于安全考虑,如果它可以采用旋转大小,则效果会更好。

当您解决具有rot13挑战的CTF时,它也可能会变得有用...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接