0

恕我直言,这种代码结构使代码的可读性降低:

int func() {
  [...]
}

这只是一个口味问题,但我更喜欢这个:

int func()
{
  [...]
}

因此,我尝试制作一个正则表达式以应用于我的文本编辑器,以使第一个示例中的代码看起来像第二个示例。

我想出了类似的东西^([\t]*)([^\t{]*)({.*)$(我不记得是不是这样)
这个想法是,当 a 出现{在非空格字符之前时,很可能是函数头或控制结构,然后拆分行并将其发送{到下一行,但保留原始行的缩进级别(即相同数量的制表符)。

最后一部分,关于保持缩进水平是我无法做到的。
任何帮助表示赞赏。

--
PS:请随意不同意我的编码标准,但请记住这不是这里的主要主题。

4

1 回答 1

0

这是第一次尝试。

文件.cpp:

int main() {
    for (;;) {
        break;
    }
    return 0;
}

使用sed -r s/^\(\\s*\)\(.*\)\\{$/\\1\\2\\n\\1{/ file.cpp输出:

int main() 
{
    for (;;) 
    {
        break;
    }
    return 0;
}

使用 sed 选择行

  1. 抓住行首的空格^\(\\s*\)
  2. 抓住除了最后一个大括号之外的所有东西\(.*\)
  3. 抓住开口支架直到行尾\\{$

替代

  1. 放回第一个和第二个参考\\1\\2
  2. 插入换行符并再次附加第一个反向引用。
  3. 打开支架。
于 2016-12-09T07:19:09.920 回答