2013-03-04 68 views
2

好吧,我有相当简单的问题:怎样才能绑定vim命令/热键来执行一些复杂的shell脚本?VIM shell命令集成

E.g.我想优化CSS文件内的base64内嵌图像。我知道,在壳它会是这样的:

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来做到这一点。

回答

1

Vim允许通过:[range]!{cmd}通过外部命令的过滤器行。如果您optipng命令可以从标准输入接受输入并打印到标准输出,可以直接使用它;否则,在小型shell脚本包装的帮助下。有关详细信息,请参见:help :range!

一个限制是,这只适用于整行,而不是零件,即使在视觉选择。你可以通过vis plugin解决这个问题;它会然后是这样的:

:'<,'>B !optipng -o7 
+0

我想,我更喜欢解析'base64'部分内css规则(对插件)。感谢您的解决方案。 – kirilloid 2013-03-11 13:39:13