源代码格式化程序/压头


17

我正在使用Ubuntu 12.04。我没有任何root或sudo特权,因为这是公司计算机。

在Ubuntu 12.04的常规安装中,可以使用任何终端程序将丑陋,格式错误的源代码转换为美观的代码吗?

同样,我无法安装任何软件包,因此,如果存在此类软件包,我需要Ubuntu附带的软件包。

例如:

    int main()
    {
test(1);
another_function(1);
}

然后将其转换为:

int main()
{
    test(1);
    another_function(1);
}

您使用什么来查看或编辑代码?想必您希望它在编辑器中缩进吗?还是要从命令行对多个文件执行此操作?
terdon 2014年

您是说像在线工具?
Braiam 2014年

1
如果您能够切换到KDE
Gedit

Answers:


12

如果您安装了vim编辑器,请使用打开文件,vim file.c然后键入=G以使文件从头到尾缩进。然后用保存:wq

在默认安装中,已安装vi(not vim),因此它将没有所需的ident软件包(如karel所述)。


9

clang格式是您的朋友!它易于使用和有用。
这里是有关它的一些信息。

用法

$ clang-format file > formattedfile

要么:

$ clang-format -i file


分步指南

1.格式严重的代码

#include <iostream>
  using namespace std;
    int main() {
         cout << "Oh";
      cout << "clang format rulez!";       
             }

main.cc

2.魔术命令

$ clang-format -i main.cc


3.格式正确的代码

#include <iostream>
using namespace std;
int main() {
  cout << "Oh";
  cout << "clang format rulez!";
}

main.cc

4.幸福

安装

如果愿意,可以使用以下方法进行安装:

$ sudo apt-get install clang-format

命令。


3

打开终端并运行:

sudo apt-get install indent
indent -linux -l120 -i4 -nut unformatted-source-code.cpp

...其中unformatted-source-code.cpp是具有未格式化C ++源代码(例如您示例中的代码)的文件。

或者,如果无法安装,则可以使用进行下载apt-get download indent并解压缩该软件包:dpkg-deb -x indent*.deb fs/,缩进二进制文件位于fs/usr/bin/fs是主目录中任何目录的位置。如果将unformatted-source-code.cpp文件复制到同一位置,fs/usr/bin/则从终端缩进代码的命令是:

cd path/to/fs/usr/bin/  # change directories to the location of "indent" executable
./indent -linux -l120 -i4 -nut unformatted-source-code.cpp

这些命令可以以普通用户身份运行。不必是root。


2
我没有任何root或sudo特权,因为这是公司计算机。
user9993

5
@ user9993您可以使用下载apt-get download indent并提取软件包:dpkg-deb -x indent*.deb fs/缩进二进制文件位于中fs/usr/bin/
Lekensteyn


1

让人联想到astyle缩进,但是默认的Ubuntu安装都不包含。当然,如果您具有C编译器,则可以对其进行编译,然后将其安装在自己的PATH中。

# Something like -
./configure --prefix=$HOME/tools
make
make install
PATH=$PATH:$HOME/tools/bin

1

emacs:

  • 打开C文件

  • 全选

  • 缩进(Tab键)

  • 保存存档

高温超导

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.