VI 读取行未提供所需的输出

VI read line not giving desired output

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

vi test

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

:r! printf %s hello

但是输入的行是

tests

即附加 s 的文件名。

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

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

vim 中处理命令行的第一步是 expand 处理它。 % 扩展为当前文件的名称 - test 在您的例子中。 %s 扩展为 tests

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

:r! printf \%s hello