【问题标题】:How do i prevent emacs from adding coding information in the first line?如何防止emacs在第一行添加编码信息?
【发布时间】:2011-09-21 04:32:58
【问题描述】:

在某些文件中,尤其是 .rb 文件中,我遇到了一个问题,即 emacs 强制我使用以下编码行。

# -*- coding: utf-8 -*-

即使我删除了该行,一旦我保存我的文件,它也会再次写入。

是否可以禁用此功能?

【问题讨论】:

    标签: emacs encoding


    【解决方案1】:

    这是 Emacs 28 not to write this line if the encoding is UTF-8 中的默认行为。

    在撰写本文时,Emacs 28 尚未发布,但到时候,或许在 2022 年,升级应该可以解决问题。

    【讨论】:

      【解决方案2】:

      看起来这是 emacs 中 ruby​​ 模式的一部分。

      我找到了一篇文章的链接,该文章展示了如何编辑 ruby​​-mode.el 文件。不确定它是否有效,但该文章中也有一条评论可能效果更好:

      (setq ruby-insert-encoding-magic-comment nil)
      

      如果您使用enh-ruby-mode 而不是使用 ruby​​-mode,则应设置此变量:

      (setq enh-ruby-add-encoding-comment-on-save nil)
      

      链接:

      Fix: Emacs/Aquamacs keeps adding encoding comments to my files

      另外,Michael Kohl 的半相关问题但中肯的回答:How can I avoid putting the magic encoding comment on top of every UTF-8 file in Ruby 1.9?

      Enh-ruby-mode comment encoding line

      【讨论】:

      • 是的 - 我向ruby-mode.el 提供了补丁,它添加了该变量。 :-) 很高兴看到我不是唯一一个被这些 cmets 惹恼的人。
      【解决方案3】:

      如果您已从 Internet 复制/粘贴代码到 Emacs 缓冲区中,您实际上可能有非 ASCII 字符。 # -*- coding: utf-8 -*- 是 Emacs 告诉您它不能简单地将文件编码为 ASCII 的方式。扫描代码中可能有冒犯性的字符(在我的例子中,它是从http://matteomelani.wordpress.com/2011/10/17/authentication-for-mobile-devices/ 复制的“智能引号”。当然 Ruby 对它们嗤之以鼻。

      【讨论】:

      • UTF-8 正在成为无处不在的标准编码,这是一件好事。您可以通过将以下内容添加到 ~/.emacs 文件中来配置 Emacs 以在任何地方使用 UTF-8:(set-language-environment 'utf-8)(set-default-coding-systems 'utf-8)(set-selection-coding-system 'utf-8)(set-locale-environment "en_GB.UTF-8")(prefer-coding-system 'utf-8)。此外,UTF-8 是 Ruby 2 的默认编码,因此如果您已升级到它,并且已将 Emacs 环境设置为使用 UTF-8,则 Emacs 无需在 Ruby 模式下保存时自动添加编码行。
      猜你喜欢
      • 2013-05-16
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多