Vim 输出外部命令

Vim 输出外部命令

有人能解释一下执行外部命令的各种方法吗?:! :%!以及如何将它们放在文件末尾?我知道:X将它们放在第 X 行之后,但:G似乎没有将它们放在文件末尾。

我想我总是可以运行该命令并从命令行将其附加到文件,command >> %但这会立即显示在 vim 中吗? 有没有更好的方法?

我总是读到 Vim 可以用作十六进制编辑器,但如果你不以二进制形式编辑它可能会破坏文件...为什么?

答案1

[count]G是用于将光标移动到行的普通模式命令[count],如果没有指定,则默认为最后一行[count]。您不能将其用作 Ex 命令的范围。

在范围内,“最后一行”的快捷方式是$

:!command和 的区别在于:{range}!command,前者command在子 shell 中执行,不会将任何内容传递给命令 via,stdin而后者将传递{range}commandviastdin并将其替换为 的输出command。这被称为筛选您可以在 中阅读全部内容:help filter

由于您似乎不想过滤缓冲区的内容,因此简单读取输出的正确模式command:!command

:read如果您想将外部命令的输出插入当前缓冲区,则是正确的命令。

使用此命令将外部命令的输出插入command到当前行下方:

:r!command

使用此命令将外部命令的输出插入到command第 15 行下面:

:15r!command

使用此命令将外部命令的输出插入到command下一个“foo”下面:

:/foo/r!command

使用此命令将外部命令的输出附加command到当前缓冲区:

:$r!command

使用这个前置外部命令输出command到当前缓冲区:

:0r!command

参见:help :read!:help range

相关内容