2009-11-04 12 views
16

私は年のための私の.emacs.elファイルでこれらの機能を持っていた:これらの機能は、私は簡単にフォーマットを切り替えることができますが、私は、デフォルトでは一つの特定の形式で書くことにEmacsを設定するかどうかはわかりませんUNIXまたはDOS形式のファイルをデフォルトで書き込むようにGNU Emacsを設定するには?

(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)) 

私が使用しているプラ​​ットフォームに関係なく今のように、私がWindowsで動くと、EmacsはWindows形式で保存します。 UNIX/Linuxで動作するとき、EmacsはUNIX形式で保存します。

実行しているプラ​​ットフォームに関係なく、EmacsにUNIX形式で書き込むように指示したいと思います。どうすればいいですか?

これらの機能の1つを呼び出すテキストモードフックを追加する必要がありますか?たとえば、私が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! –

+6

'setq-default'は' set-default'ではなく、上記の変数を変更する正しい方法です。それ以外の場合は、変数名を引用する必要があります。 – e40

+0

setq-defaultsを修正しました –

11

私は質問と回答をアップにしましたが、おそらく情報を改善するために数分を費やしていたので、追加します。

まず最初に、それぞれの変数と関数のドキュメントを調べ、user181548の答えを(最初にEmacsに切り取り、貼り付け)それぞれにカーソルを置き、それぞれC-h v RETC-h f RETと入力して確認しました。

これは私だけ(リフレッシュするたびにdescribe-coding-system(チェックするC-h C RET RETを入力)し、g)既存のバッファのエンコーディングを変更していないようでした他の線を試す

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

を必要とするかもしれないことを示唆し、私は、他の線を省略し、第三及び上記の関数の第四行を発見するために、好奇心のためにキーバインディング素早くつまり、まだ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 
     ) 

を作りました、私は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(' etc 'の代わりに、 'F3'と' F4'を使うことができます) –

+0

'utf-8-unix'エンコーディングと' LF'行に必要だった行この記事(http://ergoemacs.org/emacs/emacs_encoding_decoding_faq.html)に基づいて '(set-language-environment" UTF-8 ")'を追加すると思っていましたが、ありがとう! – legends2k

関連する問題