我一直在使用 Vimgolf 来提高自己的专业水平。
在这个特定的任务最好的解决方案之一是以下命令。
<C-V>Gg?ZZ
我的理解ZZ
是保存并退出 - 并且 control-v 进入可视模式,但Gg?
对我来说这看起来像是巫术。
谷歌的搜索功能让我有点失望 - 尤其是因为它似乎?
在谷歌和 vim 中都超载了...有人能帮我解决这个问题吗?g?
在 vim 中的任何给定行上看起来它都会旋转一些字符... :s
答案1
任务是对第一列字母进行 rot13 处理,使其与后面的单词匹配for
;由此可以明显看出,顶级解决方案在某种程度上与 rot13 执行的效果相同。如果我们忽略所有与 rot13 无关的内容,或者至少忽略更改文本……我们还剩下什么?
我们将命令分解成几个小块:
(<C-V>)(G)(g?)(ZZ)
\1
是视觉块模式,与 rot13 或更改文本无关。\2
将可视块选择扩展到缓冲区的最后一行,同样,与 rot13 或更改文本无关。\3
是什么?\4
写入并关闭缓冲区,同样,与 rot13 或更改文本无关。
毕竟,g?
(剩余的块)是该命令中我们唯一不知道的部分,可能与更改文本或 rot13 有关。鉴于解决方案的高等级和令人难以置信的简洁性g?
,它精确执行所要求的操作 rot13 的概率是非常高的。
或者是?
为了确保我们走在正确的轨道上,让我们问一下 Vim:
:h g?
Vim 用通常的声音回应:
Rot13 编码 {motion} 文本。
没有谷歌,没有互联网。只有灰质和 Vim;无敌组合!
答案2
G
表示“转到最后一行”。因此,如果你在文件开头并按
<C-V>G
你最终会标记每一行的第一列。现在
g?
意思是做rot13加密。这包括将字母沿字母表向下旋转 13 个点。这种极其脆弱的加密用于在线论坛,以隐藏攻击性语言、剧透和其他你不想让人们阅读的内容,除非他们真的想读。