首页 > 解决方案 > VI 读取行没有给出所需的输出

问题描述

我有一个名为 的文件test,我使用 vi 打开它:

vi test

现在我想通过 shell 命令插入一行,为简单起见,我使用printf

:r! printf %s hello

但是输入的行是

tests

即带有s附加的文件的名称。

如果我直接在终端中输入相同的命令,它工作正常。

我想要做的是最终能够在base64中编码一个字符串并将它输入到我的光标在vi中的同一行,这样我就不必在单独的终端中复制字符串,对其进行编码,然后将其复制回vi。我怎样才能做到这一点?我究竟做错了什么?

标签: vimvi

解决方案


处理命令行的第一阶段vimexpanding 它。%扩展为当前文件的名称-test在您的情况下。%s扩展为tests

为了避免扩展用反斜杠保护特殊字符:

:r! printf \%s hello

推荐阅读