2

好的,我有一个相当简单的问题:如何绑定vim命令/热键来执行一些复杂的 shell 脚本?

例如,我想优化 css 文件中的 base64 内联图像。我知道,在 shell 中它会是这样的:

echo `selection` > /tmp/img.png.b64
base64 -d /tmp/img.png.b64 > /tmp/img.png
optipng -o7 /tmp/img.png
base64 -w 0 /tmp/img.png > `selection`

我想放入selection脚本,然后获取脚本执行的结果并用该结果替换选定的内容。我将工作流程视为在可视块模式下选择 base64 部分并键入例如:'<,'>optipng或按一些热键。问题是如何设置 vim 来做到这一点。

4

1 回答 1

1

Vim 允许通过外部命令过滤:[range]!{cmd}。如果你的optipng命令可以从 stdin 获取输入并打印到 stdout,你可以直接使用它;否则,在一个小的 shell 脚本包装器的帮助下。详情请参阅:help :range!

一个限制是这仅适用于整行,而不是部分,即使在视觉上选择时也是如此。您可以使用vis 插件解决此问题;然后它会是这样的:

:'<,'>B !optipng -o7
于 2013-03-04T13:34:04.007 回答