macvimでの日本語表示

466 views
Skip to first unread message

Kouhei Yamada

unread,
Jan 20, 2016, 11:34:34 AM1/20/16
to vim_jp
はじめまして
vimは使い始めたばかりです。

今までCUI版のvimを使っていたのですが、GUI版も一度使ってみようと思い、macvimをHomebrewでインストールしてみました。
問題なく起動したのですが、日本語を入力すると文字化けしてしまいます。
:e ++enc=utf-8としてみましたが変わりませんでした。
また .vimrcに
set enc=utf-8
set fileencodings=utf-8,euc-jp,sjis,cp932,iso-2022-jp
と書いているので、エンコーディングの問題ではないと思います。

というページに iconv が使えないと文字化けする可能性があるとあったのですが、ターミナルでiconvと実行してみたところ、問題なく実行できました。

ここでhttps://github.com/splhack/macvim-kaoriyaというものがあったので、これを使ってみましたが、Homebrew版と同じ状況です。
googleで調べても同じ症状の対処例がない(見つからない)ので、投稿させていただきました。

初心者であまりよくわかっていないので、なんでもお教えいただけるとありがたいです。

takets takeda

unread,
Jan 22, 2016, 3:20:16 AM1/22/16
to vim_jp
はじめまして。

私は/splhack/macvim-kaoriyaとATOKという環境で使用しておりますが、
日本語が使えています。

考えられる状況は、
1.fileformatsが適切ではない
2.iconvがGvimだと使えていない
を考えました。

Gvimで :version
と入力して、『+iconv』となっているかを確認してみてください。
違っていれば、iconvをインストールする(brew libiconvとか)。
正しいのなら、以下のコードを.vimrcに貼り付けてみてください。
普段、私が使っているものです(相当昔に設定したもののため、細部がどうなっているのか忘れてますが……)
参考程度に。

" 文字コードの自動認識

"set encoding=utf-8より上に記述
let &termencoding = &encoding
"文字コードの自動解釈の優先順位
set fileencodings=utf-8,cp932,euc-jp
"内部の解釈の文字コード 設定ファイルもこのコードで記述してください
set encoding=utf-8

if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  " iconvがeucJP-msに対応しているかをチェック
  if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
  " iconvがJISX0213に対応しているかをチェック
  elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  " fileencodingsを構築
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  " 定数を処分
  unlet s:enc_euc
  unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
  function! AU_ReCheck_FENC()
    if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0
      let &fileencoding=&encoding
    endif
  endfunction
  autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
  set ambiwidth=double
endif






2016年1月21日木曜日 1時34分34秒 UTC+9 Kouhei Yamada:

Kouhei Yamada

unread,
Jan 22, 2016, 6:37:27 AM1/22/16
to vim_jp
返信ありがとうございます。
versionは +iconv となっていました。
そこで、コードをvimrcに追記してみましたが、相変わらず文字化けしたままでした。

2016年1月22日金曜日 17時20分16秒 UTC+9 takets takeda:
Message has been deleted

Kouhei Yamada

unread,
Jan 22, 2016, 7:04:47 AM1/22/16
to vim_jp
解決しました。
vimrcをいじっていると、
powerlineの設定の、
python from powerline.vim import setup as powerline_setup
python powerline_setup()
python del powerline_setup
を消すと正常に表示されるようになりました。

takets takeda

unread,
Jan 22, 2016, 7:52:59 AM1/22/16
to vim_jp
pythonを実行しているようですが、
もしかしたらpythonの文字コードが違っていて、衝突を起こした可能性があります。

いずれにせよ、解決してよかったです。

2016年1月22日金曜日 21時04分47秒 UTC+9 Kouhei Yamada:
Reply all
Reply to author
Forward
0 new messages