.emacs.el
多年来我在我的文件中有这些功能:
(defun dos2unix () "Convert a DOS formatted text buffer to UNIX format" (interactive) (set-buffer-file-coding-system 'undecided-unix nil)) (defun unix2dos () "Convert a UNIX formatted text buffer to DOS format" (interactive) (set-buffer-file-coding-system 'undecided-dos nil))
这些函数允许我轻松地在格式之间切换,但我不知道如何配置Emacs默认情况下以一种特定格式写入,无论我使用哪个平台.就像现在一样,当我在Windows上运行时,Emacs以Windows格式保存; 当我在UNIX/Linux中运行时,Emacs以UNIX格式保存.
无论我运行的平台如何,我都想指示Emacs以UNIX格式编写.我该怎么做呢?
我是否应该添加一些调用这些函数之一的文本模式钩子?例如,如果我在Windows上,那么dos2unix
在找到文本文件时调用?
我的.emacs中有很多这些:
(setq-default buffer-file-coding-system 'utf-8-unix) (setq-default default-buffer-file-coding-system 'utf-8-unix) (set-default-coding-systems 'utf-8-unix) (prefer-coding-system 'utf-8-unix)
我不知道哪个是对的,我只是迷信.
我投了问题和答案,但花了几分钟可能改进信息,所以我会添加它.
首先,我检查了每个变量和函数的文档,在user181548的答案中,通过(首先剪切并粘贴到Emacs,然后)将光标放在每个上,C-h v RET
然后C-h f RET
分别键入.
这表明我可能只需要
(prefer-coding-system 'utf-8-unix)
尝试使用其他行似乎没有改变预先存在的缓冲区编码(键入C-h C RET RET
check(describe-coding-system
)和g
每次刷新),所以我省略了其他行并进行了键绑定以快速更改任何仍然存在的旧文件DOS,即
(defun set-bfr-to-8-unx () (interactive) (set-buffer-file-coding-system 'utf-8-unix) ) (global-set-key (kbd "C-c u") 'set-bfr-to-8-unx )
为了好奇,发现上面第三和第四行的功能,(set-buffer-file-coding-system 'utf-8-unix)
我曾经C-x RET f RET
手动改变当前缓冲区的编码,然后M-x command-history RET
看看这些键如何转换为代码.
现在也许我的git commit会停止抱怨CR.