是否可以使用VIM格式化C++代码?

Ope*_*way 32 vim code-formatting

我对VIM很新.我得到了一些源代码,这是一团糟.乍一看,我想至少得到一个清晰,有条理的代码视图,所以我喜欢正确格式化,我的意思是缩进取决于函数的深度等等.

我想知道是否可以用VIM完成,否则你可以推荐哪些其他命令行工具.

谢谢

m00*_*000 60

虽然vim是一把真正的瑞士刀,但我仍然更喜欢使用外部工具来完成某些工作.与使用内置等效方法相比,这种方法有时更直观,更容易记忆.

在缩进的情况下,我通过astyle过滤整个文件缓冲区.astyle参数在几分钟内更容易掌握,特别是如果你不是vim guru的话.此外,astyle在微调输出方面提供了更大的灵活性.

首先安装astyle:
# apt-get install astyle

然后在vim里面:(
:%!astyle简单的情况 - astyle默认模式是C/C++)

:%!astyle --mode=c --style=ansi -s2(ansi C++风格,每个缩进级别使用两个空格)

:1,40!astyle --mode=c --style=ansi(ansi C++风格,仅过滤1-40行)

  • 您还可以通过将`equalprg`设置为astyle(例如:`set equalprg =〜/ astyle\--style = google`)来覆盖Vim的缩进运算符(`=`)以使用Astyle (4认同)

cod*_*ict 28

你可以做到以下几点:

gg=G
Run Code Online (Sandbox Code Playgroud)

  • `=`不格式化代码,它重新缩进代码. (6认同)
  • 或以"V"开始进入视线模式,然后用`j`向下移动以选择要格式化的所有行,然后点击`=` (2认同)

Yon*_* Wu 13

我现在强烈推荐clang-format.一旦安装了clang格式,它允许将clang格式简单地集成到Vim中:

http://clang.llvm.org/docs/ClangFormat.html#vim-integration

它是唯一真正理解您的C++代码的代码美化器,它非常智能地将代码美化为更像人而不是机器.例如:

void TestFunction(int argument1, int argument2,
                  int argument3);
void TestFunctionVeryLongName(int argument1,
                              int argument2,
                              int argument3);
void TestFunctionWithRidiculouslyLongName(
    int argument1, int argument2, int argument3);
Run Code Online (Sandbox Code Playgroud)

  • clang格式手册中建议的键绑定的替代方法是在vim中使用“ equalprg”绑定。这使您可以使用G = gg或其他=缩进选项来调用clang-format。只需将以下内容放入您的.vimrc文件中:autocmd FileType c,cpp setlocal equalprg = clang-format (2认同)

Mik*_*ler 5

Vim 肯定会这样做,尽管结果可能并不完美:

  1. 首先,在可视模式下选择整个文件:ggVG
  2. 然后点击 = 重新缩进所有内容。

您可以通过以下方式了解有关 equal 命令的更多信息::help =


Chi*_*nke 5

有一个 vim 插件,可以在 vim 中对代码进行格式化。它称为 vim-autoformat,您可以在此处下载:

https://github.com/vim-autoformat/vim-autoformat

它将外部代码格式化程序集成到 vim 中。例如,如果要格式化C、C++、C#或Java代码,则需要安装程序astyle,vim会自动将其设置为格式化程序。