我想重新格式化一些看起来像这样的代码:
if (cond) {
foo;
}
Run Code Online (Sandbox Code Playgroud)
至
if (cond)
{
foo;
}
Run Code Online (Sandbox Code Playgroud)
由于这是C代码,我一直在寻找cindent/ cinoptions使用,=但它似乎不处理多线规则.
我一直在寻找formatoptions使用gq,它似乎也不可能.
那么可以使用默认的Vim选项,还是应该使用特定的插件或功能?
我不知道这是否完全解决了你的问题,但如果这是一次性操作,你可能想尝试正则表达式:
:%s/^\(\s*\)\(.*)\)\s*{\s*$/\1\2^M\1{/
Run Code Online (Sandbox Code Playgroud)
请注意,这^M是一个通常按下CTRL-V后面生成的控制字符(取决于您的终端)ENTER.
编辑:正如Jay和Zyx的评论所指出的,\r是一种更换插入换行字符串的更好方法.我没有意识到这一点,非常感谢提示.
:%s/^\(\s*\).*\zs{\s*$/\r\1{/
Run Code Online (Sandbox Code Playgroud)
分解:
^\(\s*\) =捕获行开头的空格
.* =其他一切
\zs =此后开始更换
{ =打开大括号
\s*$ =在行结束前尾随空格
\r\1{ =换行符,捕获的空格,大括号
| 归档时间: |
|
| 查看次数: |
982 次 |
| 最近记录: |