在Emacs中隐藏^M

60
有时我需要阅读具有 ^M (control-M) 行结尾的日志文件。我可以进行全局替换以摆脱它们,但随后会记录更多内容到日志文件中,它们当然会再次出现。
设置Unix样式或dos样式的行尾编码似乎没有什么区别(但Unix样式是我的默认设置)。我使用未决定-(unix|dos) 编码系统。
我正在使用 Windows 操作系统,阅读由 log4net 创建的日志文件(尽管 log4net 显然不是这种烦恼的唯一来源)。

1
不幸的是,set-buffer-file-encoding-system并不能解决这个问题。缓冲区打开时模式行显示为UNIX。使用C-x RET f UNIX RET只会将缓冲区标记为已修改,而无法隐藏令人讨厌的^M字符。 - Russell
GNUS 中的电子邮件是另一个可能遇到混合行尾编码缓冲区的地方。例如,如果从以 Windows 为中心的机构(如 Outlook)发送,则标题信息将获得 Unix 的行尾编码。 - Brady Trainor
12个回答

0

像binOr所说的那样,在Windows上将此添加到您的%APPDATA%。emacs.d\init.el或任何其他配置文件中。

;; Windows EOL
(defun hide-dos-eol ()
  "Hide ^M in files containing mixed UNIX and DOS line endings."
  (interactive)
  (setq buffer-display-table (make-display-table))
  (aset buffer-display-table ?\^M []))

(defun show-dos-eol ()
  "Show ^M in files containing mixed UNIX and DOS line endings."
  (interactive)
  (setq buffer-display-table (make-display-table))
  (aset buffer-display-table ?\^M ?\^M))

(add-hook 'text-mode-hook 'hide-dos-eol)

我应该建议在binOr的答案中进行更改吗? - Nicolas Lussier-Clément
一旦您拥有足够的声望,您将能够评论任何帖子。另请参阅:为什么我需要50个声望才能发表评论?我还能做些什么? - help-info.de
我上面的第一个评论是关于晚回答应该注意的事项。当然,你可以留下你的答案。但请解释你的程序代码,例如添加显示隐藏的配置。对@binOr的回答的一种可能的快速方式是:要显示^M,您可能想要添加(defun show-dos-eol ()(aset buffer-display-table ?\^M ?\^M)) - help-info.de
现在很酷,我不能发表评论。我建议对binOr进行修改,如果他改变了它,我会删除我的评论,这只是对他的工作解决方案的小改进! - Nicolas Lussier-Clément

0

使用dos2unix、unix2dos(现在tofrodos)怎么样?


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