ロケールの固定しない

今まで使用していた環境がすべてUTF-8だったので,zsh,screen,vimのすべてがそれに想定された設定にしていたため,全部適切に調整するのに大変苦労しました.
端末によっても様々なので,1つに固定しない様な設定にすることにしました.

vim

.vimrcに記述していた,'encoding'と'termencoding'をコメントアウト
'encoding'は特に指定しなければユーザのロケールの値が使われるのでむやみに設定しなくても良さそうでした(:help 'encoding').
'termencoding'は指定しなければ'encoding'と同じ値を使用するようですのでこちらも特に指定しない方がいいかもしれません.

screen

.screenrcに記述していたencoding, defencoding, defkanjiをコメントアウト
encoding, defencodingは特に指定しなければvim同様にユーザのロケールに合わせてくれます.
defkanji自体はmanに載ってないのですが,カーソル移動関係で問題を起こさないようにする物のようです.
http://www.gaku.net/uklog/a453.html

zsh

これはとても苦労しました.なんせ.zlogin, .zshrc, .zshenvの3種類に手を加えることになったので.一応おさらいしておくと通常は

  • /etc/zshenv
  • $ZDOTDIR/.zshenv
  • /etc/zprofile
  • $ZDOTDIR/.zprofile
  • /etc/zshrc
  • $ZDOTDIR/.zshrc
  • /etc/zlogin
  • $ZDOTDIR/.login

の順で読み込まれます($ZDOTDIRは特に指定しなければ$HOMEを読む).ただしログインシェルの場合zprofile,zloginは読まれず,zshrc以降は対話的に使用してる場合しか読み込まれません(man zshallのSTARTUP/SHUTDOWN FILESの項目).
(zshの本によれば,通常.zshenv, .zshrc, .zloginの3つを書けば良いとのこと)


読み込まれる場合とタイミングを注意すれば,ロケールの設定はzshenvにのみ書けばいいと思います.と言うことでなぜかzshrc, zloginに書いてたLANGの設定を削除しました.
zshenvは,ボクは各マシン固有で持たせてるのですが,研究室マシンではひな形が既に用意されてたので,それを編集しました.余談ですがざっと斜め読みしたら何点か突っ込みたい部分が見受けられました.
基本的には端末がデフォルトで指定してくれるはずなのでむやみに設定しない方がいいと思います.デフォルトで設定してくれない端末だけcase文で指定すれば良いと思います(そういうのがあるのかわかりませんが).
どのロケールでも使える端末ならUnicode(UTF-8)を指定するのが個人的にオススメです.今やeucオワコンだと勝手に思ってます(がこういうことがあるので何ともいえませんね).


これでとりあえずはロケールがおかしくならないようになりました.設定ファイルを様々な環境に持ち出す際はなるべく環境依存な設定を行わないようにするのが吉ですね.