我有一个包含如下行的 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
。