文字化け encodingとfileencodingsの設定
zshのキーバインドをvi風にしたいなと考えて.zshrcを開いたときに問題が発生してしまった。 なんか文字化けしてる・・・なぜ? `.zshcr` 1 #^[$B%*%W%7%g%s^[(B 2 setopt auto_cd 3 setopt auto_pushd 4 5 #^[$BJd40^[(B 6 #for-zsh-completions 7 fpath=(/usr/local/share/zsh-completions $fpath) 8 ...
zshのキーバインドをvi風にしたいなと考えて.zshrcを開いたときに問題が発生してしまった。
なんか文字化けしてる・・・なぜ?
`.zshcr`
        1 #^[$B%*%W%7%g%s^[(B
        2 setopt auto_cd
        3 setopt auto_pushd
        4
        5 #^[$BJd40^[(B
        6 #for-zsh-completions
        7 fpath=(/usr/local/share/zsh-completions $fpath)
        8
        9 #^[$BJd405!G=$rM-8z$K$9$k^[(B
        10 autoload -Uz compinit
        11 compinit -u
        12 #^[$BJd40^[(B ^[$B%a%K%e!<$NA*Br%b!<%I^[(B
        13 zstyle ':completion:*:default' menu select=2
         14
        15 #^[$BJ8;z$N6h@Z$j@_Dj^[(B
        16 autoload -Uz select-word-style
        17 select-word-style default
        18 zstyle ':zle:*' word-chars "/=;@;{}.|"
        19 zstyle ':zle:*' word-style unspecified
        20
        21 #^[$BBgJ8;z$H>.J8;z$r6hJL$7$J$$^[(B
        22 zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
とりあえず.vimrcの設定を見直すことに
`.vimrc` :set encoding=utf-8 :set fileencodings=utf-8,iso-2022-jp,euc-jp,sjis
vimの文字コード設定に知っている文字列をつっこんでいただけなので、どうやらこのような問題が起きたみたいです。
調べてみると encodingはvimの内部で使用する文字コードだそうです。 またfileencodingsをしなかった場合自動的にこのencodingにしていした文字列で開かれるそうです。
fileecodingsが自動判別の設定です。
記述された順番に対象ファイルを開いてうまくいった文字コードを採用するそうです。
しかし!ここで注意があるみたいです。asciiの文字列は大抵の文字コードにマッチしてしまうみたいなので
1.fileecodingsの最初に書かれた文字コードが採用されてしまう。
2.encodingに指定された文字を見つけたら即採用
とうことです。
つまり僕の設定はutf-8でしか開かない!!というとんだ設定をしていたみたいです。
というわけで設定を直しました。
`.vimrc`
    ;set encoding=utf-8
    :set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
これで無事
`.zshcr`
        1 #オプション
        2 setopt auto_cd
        3 setopt auto_pushd
        4
        5 #補完
        6 #for-zsh-completions
        7 fpath=(/usr/local/share/zsh-completions $fpath)
        8
        9 #補完機能を有効にする
        10 autoload -Uz compinit
        11 compinit -u
        12 #補完 メニューの選択モード
        13 zstyle ':completion:*:default' menu select=2
         14
        15 #文字の区切り設定
        16 autoload -Uz select-word-style
        17 select-word-style default
        18 zstyle ':zle:*' word-chars "/=;@;{}.|"
        19 zstyle ':zle:*' word-style unspecified
        20
        21 #大文字と小文字を区別しない
        22 zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
正しい文字コードで開けるようになりました。
ちなみにfile -I .zshrcで文字コードを調べてみたらなぜかus-asciiになっていました。
ascii系ということは大体の文字コードが成功になってしまうのでeuc-jpとか先に書いてしまったら文字化けしてしまいますね。ascii系のファイルを読める形で開くには互換性のあるiso-2022を前に持ってこなければなりませんね。
試しにeuc-jpを前に記述したらまた文字化けしました・・・
今回のことで文字コードに興味がもてたので少しづつ勉強しようかなと思いました。スクリプト言語のこともあるので。
