有人能解释一下执行外部命令的各种方法吗?:!
:%!
以及如何将它们放在文件末尾?我知道:X
将它们放在第 X 行之后,但:G
似乎没有将它们放在文件末尾。
我想我总是可以运行该命令并从命令行将其附加到文件,command >> %
但这会立即显示在 vim 中吗? 有没有更好的方法?
我总是读到 Vim 可以用作十六进制编辑器,但如果你不以二进制形式编辑它可能会破坏文件...为什么?
答案1
[count]G
是用于将光标移动到行的普通模式命令[count]
,如果没有指定,则默认为最后一行[count]
。您不能将其用作 Ex 命令的范围。
在范围内,“最后一行”的快捷方式是$
。
:!command
和 的区别在于:{range}!command
,前者command
在子 shell 中执行,不会将任何内容传递给命令 via,stdin
而后者将传递{range}
给command
viastdin
并将其替换为 的输出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
。