2009-11-04 52 views
16

我已經在我的.emacs.el文件中的這些功能歲:如何配置GNU Emacs默認寫入UNIX或DOS格式的文件?

(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

回答

23

我有一大堆的這些在我的.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) 

我不知道這是正確的,我只是迷信。

+2

哈!這是相當不錯的東西。 +1爲腰帶和吊帶! – 2009-11-04 15:38:40

+6

'setq-default'不是'set-default'是改變上述變量的正確方法。否則,您需要引用變量名稱。 – e40 2013-07-24 17:48:44

+0

更正了setq-defaults – 2015-02-19 18:19:00

11

我投了贊成票的問題和答案,但花了幾分鐘可能改善信息,所以我會添加它。

首先,我檢查了user181548答案中每個變量和函數的文檔,(先剪切並粘貼到Emacs中,然後)將光標放在每個變量上,然後分別輸入C-h v RETC-h f RET

這表明,我可能只需要

(prefer-coding-system 'utf-8-unix) 

與其他行進行實驗似乎沒有改變預先存在緩衝編碼(打字C-h C RET RET檢查(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 
     ) 

對於好奇,發現第3個及以上功能的4號線,(set-buffer-file-coding-system 'utf-8-unix),我使用C-x RET f RET來手動更改當前緩衝區的編碼,然後使用M-x command-history RET來查看這些密鑰如何轉換爲代碼。

現在也許我的git commit會停止抱怨CR。

+0

順便說一句,鍵盤宏可能對改變一組文件的編碼(比如說,來自dired)有用。可以在https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Keyboard-Macro.html#Basic-Keyboard-Macro找到現代鍵綁定。 (而不是'Cx('等,我們可以使用'F3'和'F4')。 – 2014-03-02 18:55:09

+0

Upvoted用於刪除冗餘;一行是'utf-8-unix'編碼和'LF'行所需要的我想我會在[本文](http://ergoemacs.org/emacs/emacs_encoding_decoding_faq.html)的基礎上增加'(set-language-environment「UTF-8」),但是我決定不'不需要它,謝謝! – legends2k 2015-05-28 10:21:36

相關問題