【发布时间】:2011-09-21 04:32:58
【问题描述】:
在某些文件中,尤其是 .rb 文件中,我遇到了一个问题,即 emacs 强制我使用以下编码行。
# -*- coding: utf-8 -*-
即使我删除了该行,一旦我保存我的文件,它也会再次写入。
是否可以禁用此功能?
【问题讨论】:
在某些文件中,尤其是 .rb 文件中,我遇到了一个问题,即 emacs 强制我使用以下编码行。
# -*- coding: utf-8 -*-
即使我删除了该行,一旦我保存我的文件,它也会再次写入。
是否可以禁用此功能?
【问题讨论】:
这是 Emacs 28 not to write this line if the encoding is UTF-8 中的默认行为。
在撰写本文时,Emacs 28 尚未发布,但到时候,或许在 2022 年,升级应该可以解决问题。
【讨论】:
看起来这是 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?
【讨论】:
ruby-mode.el 提供了补丁,它添加了该变量。 :-) 很高兴看到我不是唯一一个被这些 cmets 惹恼的人。
如果您已从 Internet 复制/粘贴代码到 Emacs 缓冲区中,您实际上可能有非 ASCII 字符。 # -*- coding: utf-8 -*- 是 Emacs 告诉您它不能简单地将文件编码为 ASCII 的方式。扫描代码中可能有冒犯性的字符(在我的例子中,它是从http://matteomelani.wordpress.com/2011/10/17/authentication-for-mobile-devices/ 复制的“智能引号”。当然 Ruby 对它们嗤之以鼻。
【讨论】:
~/.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 模式下保存时自动添加编码行。