vim の default 設定は utf8 で、日本語の shift_jis ファイルを見るときに、 set fileencoding=sjis
の方法はできませんでした。何か方法がありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
もう一度同じ間違いをしない為には、fileencoding の正しい使われ方、fileencodings との関連についてを知る必要があると思います。
fileencodings オプションは、ファイルを開く際に encoding (現在のエンコーディング)への変換を試みるエンコーディングの一覧になります。ですので順番が重要です。※後述します
Vim は fileencodings に並べられたエンコーディングを順番に変換を試み、成功するとその時点のエンコーディング名を fileencoding (s はありません) オプションに設定します。全て失敗すると encoding が示すエンコーディングで開く様に動作します。
fileencoding の値はファイルの保存時にも使用され、:w
を実行すると encoding から fileencoding への変換が行われたのち保存されます。つまり fileencoding オプションを変更するという事は、現在開いているバッファをどのエンコーディングで保存するか、という意味になります。
ファイルのエンコーディングを指定して開く方法は上記の回答にある通り :e ++enc=cp932 filename.txt
といった感じに実行します。まれに例えば cp932 (MS の shift_jis) ではあるが、変換できない文字がファイルに含まれてしまう事があったりしますが、Vim は ++enc
を指定しながらも変換に失敗すると失敗した文字を ?
に置き換えてしまいます。これが嫌な場合は :e ++enc=cp932 ++bad=keep filename.txt
と指定してファイルを開いて下さい。変換されないまま文字が残ります。
最後に後述するといった部分ですが、cp932 はコードの範囲がとても広いエンコーディングです。つまりは誤爆しやすいエンコーディングになります。それに比べて utf-8 は符合化されるバイトに規則があるため誤爆しづらいエンコーディングになります。ですので cp932 は utf-8 よりも後に持ってきた方が良いという事になります。実際には先人が設定した vimrc が github 等に多く転がっていますので、そちらを参考になさって下さい。
投稿2016/12/09 07:32
総合スコア5030
0
ベストアンサー
vimに恒久的に設定
# vi ~/.vimrc set encoding=utf-8 set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
投稿2016/12/09 07:03
編集2016/12/09 07:04総合スコア4070
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/09 07:35