わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

簡単操作でutf-8-unix/utf-8-dos/shift_jis-dosに

NTEmacsでファイルを編集している限り,よく使う文字コードは,shift_jis-dos, utf-8-unix, utf-8-dosの3つです.デフォルトはshift_jis-dosにしています.utf-8-unixRubyスクリプトなど,CygwinLinuxで実行したりファイル加工したりするのに適しています.utf-8-dosで保存したテキストファイルは,Windowsでダブルクリックして問題なく読めるというメリットがあります.
バッファの文字コードを切り替えるには,C-x RET fなのですが個人的にはC-x C-m f*1として,それでその文字コードを打ち込んでRETです.文字コードの入力の際に補完できるとはいえ,少々面倒です.
関数を定義して,キーに割り付けました.

(defun set-bfcs-uu ()
  "set utf-8-unix"
  (interactive)
  (set-buffer-file-coding-system 'utf-8-unix))
(global-set-key (kbd "C-x RET u") 'set-bfcs-uu)
(global-set-key (kbd "C-x RET C-u") 'set-bfcs-uu)
(defun set-bfcs-ud ()
  "set utf-8-dos"
  (interactive)
  (set-buffer-file-coding-system 'utf-8-dos))
(global-set-key (kbd "C-x RET d") 'set-bfcs-ud)
(global-set-key (kbd "C-x RET C-d") 'set-bfcs-ud)
(defun set-bfcs-sd ()
  "set shift_jis-dos"
  (interactive)
  (set-buffer-file-coding-system 'shift_jis-dos))
(global-set-key (kbd "C-x RET s") 'set-bfcs-sd)
(global-set-key (kbd "C-x RET C-s") 'set-bfcs-sd)

(global-set-key (kbd "C-x RET C-f") 'set-buffer-file-coding-system)

キーとしてどんな値を設定したらいいかについては,Emacs: How to Define Keysが役に立ちました.
global-set-keyが少々多めなのは,例えばutf-8-unixにしたいときに,Ctrlを押しながら,X, M, Uの順に押せばいいじゃないかと思ったからです.快適です.

*1:「Ctrlを押しながらXを押して,ともに離して,Enterを押して,それからFを押す」と「Ctrlを押しながら,XとMの順に押して,離して,それからFを押す」の違いです.まあ大差ないでしょう.