![有没有办法使用 vim 宏或其他工具重新格式化 css?](https://linux22.com/image/1326905/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E4%BD%BF%E7%94%A8%20vim%20%E5%AE%8F%E6%88%96%E5%85%B6%E4%BB%96%E5%B7%A5%E5%85%B7%E9%87%8D%E6%96%B0%E6%A0%BC%E5%BC%8F%E5%8C%96%20css%EF%BC%9F.png)
我有一个包含如下行的 CSS 文件:
.exhibit-page-nav {list-style:none; float: left; padding: 1em 0; width: 100%; border-top: 1px solid #c7b5a2;}
但我希望它看起来像这样:
.exhibit-page-nav {
list-style:none;
float: left;
padding: 1em 0;
width: 100%;
border-top: 1px solid #c7b5a2;
}
有没有办法编写 vim 宏来做到这一点?
答案1
@user137369 的评论很正确,但是你要求的是 vim 宏……
如果您只想格式化这一行,则不需要宏:简单的替换就足够了。但将来您可能需要再次进行同样的练习;在这种情况下,您可能希望将其录制为宏,甚至将其保存为命令或映射。
那么...假设您想将其保留为宏:
qx " start recording in register x
:s/[;\{]/\0\r/g " the substitution that does the formatting
=i{ " indent the whole thing nicely
q " stop recording
之后,您可以将光标放在线上并点击来应用宏:
@x
替换的意思是“将任何;
或{
([;\{]
)替换为其自身(\0
),后面跟着一个回车符(\r
)”。
现在假设您有十几行这样的代码,将宏应用到所有这些代码块就像选择它们并输入一样简单:
:'<,'>norm @x
看:help :normal
。
如果文件中有很多这样的行,并且能够识别出一个共同的模式,那么;}
另一个选项(我非常喜欢)是使用以下命令:global
:
:g/;\}/norm @x
看:help :global
。