我正在编写配置文件,我需要定义进程是否需要Windows格式文件或unix格式文件.我有一份预期文件的副本 - 有没有办法可以检查它是否使用\n或\ r \n而不退出emacs?
如果在Unix上打开文件时在模式行上显示(DOS),则行结尾为Windows样式.如果在Windows上打开文件时说(Unix),那么行结尾是Unix风格的.
从Emacs 22.2手册(节点:模式行):
如果缓冲区的文件使用回车换行,冒号将变为反斜杠('\')或'(DOS)',具体取决于操作系统.如果文件仅使用回车符,则冒号指示符将变为正斜杠('/')或'(Mac)'.在某些系统上,对于使用换行作为行分隔符的文件,Emacs显示"(Unix)"而不是冒号.
这是一个函数 - 我认为 - 展示了如何从elisp检查Emacs已经确定哪种行结尾类型.如果看起来非常复杂,也许就是这样.
(defun describe-eol () (interactive) (let ((eol-type (coding-system-eol-type buffer-file-coding-system))) (when (vectorp eol-type) (setq eol-type (coding-system-eol-type (aref eol-type 0)))) (message "Line endings are of type: %s" (case eol-type (0 "Unix") (1 "DOS") (2 "Mac") (t "Unknown")))))