“.:!”和“:r!”之间有什么区别?

5
阅读一些vim技巧,我遇到了:r!{command}:.!{command},两者都将shell命令<command>的输出放入当前缓冲区。
我想象中'r'代表'read',但上述命令中的点号应该如何“翻译”呢?
另外:它们的功能完全相同吗?
非常感谢您的见解!
Guba

也许这个问题应该发到超级用户(superuser)上,因为它是一个用户问题而不是编程问题?[@Guba,不用担心移动它,如果需要的话,它会自动发生。beta密码在http://blog.stackoverflow.com/2009/07/super-user-semi-private-beta-begins/,别忘了链接你的账户,参见http://blog.stackoverflow.com/2009/07/cross-site-account-associations/] - bdonlan
1个回答

16

点号是一个区域,代表当前行。然后!将这个区域通过命令进行传输。

例如,如果你执行:

:.!rev

您可以将当前行中的字符顺序颠倒。

当然,如果您使用忽略其输入的命令,则会用输出替换当前行。

:r! 命令则会将输出插入到当前行之后,而不会删除当前行的文本。


太棒了!感谢快速而准确的答复! - Guba
.r! 对我不起作用。它没有接受行并将其管道传递给命令。 - Arpegius
1
lionbest,请注意没有提到:.r!。它只能是:!{command}或:r!{command}。 - Guba

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