19

私は.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))

これらの関数を使用すると、フォーマットを簡単に切り替えることができますが、使用しているプラ​​ットフォームに関係なく、デフォルトで 1 つの特定のフォーマットで書き込むように Emacs を構成する方法がわかりません。今のところ、Windows で実行すると、Emacs は Windows 形式で保存されます。UNIX/Linux で実行すると、Emacs は UNIX 形式で保存されます。

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

これらの関数のいずれかを呼び出すテキスト モード フックを追加する必要がありますか? たとえば、Windows を使用している場合dos2unix、テキスト ファイルを見つけたときに呼び出しますか?

4

2 に答える 2

26

私は.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)

どちらが正しいかはわかりません。私はただの迷信です。

于 2009-11-04T15:27:39.857 に答える
14

質問と回答に賛成票を投じましたが、情報を改善するために数分費やしたので、追加します。

まず、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 について泣き言を言うのをやめるかもしれません。

于 2014-02-17T19:40:12.007 に答える