不要在emacs中显示^M字符

12

我想知道是否有一种方法可以暂时不显示文件中的^M字符。
我不想删除它们,只想暂时不显示它们。

3个回答

13

我使用以下函数(忘记在哪里找到的):

(defun hide-ctrl-M ()
  "Hides the disturbing '^M' showing up in files containing mixed UNIX and DOS line endings."
  (interactive)
  (setq buffer-display-table (make-display-table))
  (aset buffer-display-table ?\^M []))

1
可以使用那段代码,但我建议使用内置于Emacs中的功能来正确处理文本编码。 - aculich

9

GNU Emacs 的文档介绍了如何使用revert-buffer-with-coding-system来处理文本编码:

C-x <RET> r coding <RET>
Revisit the current file using the coding system coding (revert-buffer-with-coding-system).

如果系统没有自动检测到正确的编码,您可以输入以下命令:

C-x RET r dos RET

这样可以避免显示^M字符,而不会实际修改文件。


我发现我需要将编码设置为utf-8-hfs-dos,而不仅仅是dos(使用emacs 25.3.1)。 - BungleFeet

0

至少在emacs 22.3中,如果您的文件具有换行样式的组合(例如在Windows和Unix下使用“非启蒙”编辑器进行编辑),则似乎只会出现此问题。

如果行以^M结尾,则现代emacs将在底部注明它处于[dos]模式,并且不显示^M。然后,当您保存时,它足够聪明地将^M放入文件中。

如果您有一些奇怪的组合,可以尝试运行

$ unix2dos FILE

为了达到一个良好的状态,希望您可以在DOS模式下保持它。

我注意到我的xemacs 21.4没有这个功能,遗憾。

这里有一个讨论: http://groups.google.com/group/gnu.emacs.help/browse_thread/thread/676113e90825d4e7


没错,但是...建议考虑使用unix2dos是为了解决文件包含混合换行符的问题。换句话说,这里提供的答案适用于一个问题,可能是提问者不知道要问的 - Cheeso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接