禁用 GNU Indent 备份文件

ivo*_*sir 5 gnu indentation

我在我的项目中使用 GNU Indent 来格式化 C 代码。

默认情况下,创建的备份文件以~.

我不想创建任何备份文件,有没有办法禁用它?

Tho*_*key 8

使用 Mercurial 中的源代码。 backup.c 中的评论说

 * Finally, if VERSION_CONTROL is "none" or "never", backups are not
 * made.  I suggest you avoid this behaviour.
Run Code Online (Sandbox Code Playgroud)

允许的值VERSION_CONTROL在同一文件中

{
    {none,              "never"},    /*!< Don't make backups. */
    {none,              "none"},     /*!< Ditto */
    {simple,            "simple"},   /*!< Only simple backups */
    {numbered_existing, "existing"}, /*!< Numbered if they already exist */
    {numbered_existing, "nil"},      /*!< Ditto */
    {numbered,          "numbered"}, /*!< Numbered backups */
    {numbered,          "t"},        /*!< Ditto */
    {unknown,           0}           /*!< Initial, undefined value. */
};
Run Code Online (Sandbox Code Playgroud)

NEWS文件中包含相同的信息,表明它的日期为 1.3 版(1990 年代后期),因此它可能在您的系统上可用。

它不在indent手册中

备份文件的类型由环境变量的值控制VERSION_CONTROL。如果它是字符串'simple',则只会进行简单的备份。如果其值为字符串'numbered',则将进行编号备份。如果它的值为'numbered-existing',那么如果缩进的文件已经存在编号的备份,则将进行编号的备份;否则,将进行简单备份。如果VERSION_CONTROL未设置,则缩进采用“编号存在”的行为。

对于它的价值,我测试了GNU indent 2.2.11(它有效)。


slm*_*slm 5

查看手册页indent官方 GNU 文档,我只看到 2 种控制此行为的方法。

环境变量:

  • SIMPLE_BACKUP_SUFFIX
  • VERSION_WIDTH

我尝试了将宽度设置为 0 并将 SIMPLE_BACKUP_WIDTH 设置为空 ( "") 的各种技巧。两者都没有达到预期的效果。我认为您唯一的做法是创建一个 shell 别名和/或函数来包装命令indent以执行您想要的操作。

例子

$ function myindent() { indent "$@"; rm "$@"~; }
Run Code Online (Sandbox Code Playgroud)

然后当我运行它时:

$ myindent ev_epoll.c
Run Code Online (Sandbox Code Playgroud)

我得到了想要的效果:

$ ls -l | grep ev_epo
-rw-r--r--.   1 saml saml     7525 Dec 13 18:07 ev_epoll.c
Run Code Online (Sandbox Code Playgroud)