Closed tyru closed 12 years ago
バージョンはkaoriyaの現行で最新版のVimを使いました。
あとで追うつもりですが、香り屋版だけで起きるとは思えない動作ですよね。 敢えて言えばWindowsで日本語用に設定されたVim、というところなんでしょうか。 もしくは香り屋固有設定のせいか。
直感的にはenc=utf-8の設定のせいかも。
ところで起動オプションで -u NONE -U NONE とかするとどうですか?
あ、そうですね。タイトルと冒頭のせいでちょっとややこしいですが マルチバイトを含むパスでエラーが出るのはkaoriya版だけの問題じゃないと思います。 すいません、ちょっと今家にWindows環境がなくてすぐに作れないので明日バイト先のPCで試します...(もちろん空き時間に)
直感的にはenc=utf-8の設定のせいかも。
そうですね。enc=utf-8書いた直後だった気がします。
ところで起動オプションで -u NONE -U NONE とかするとどうですか?
了解です。これも明日試してみます。
タイトル修正しました。
明日試すことをメモのためにリストしておきます。
上記設定でこちらでも再現しました。(フォルダは C:\temp\日本語\vim)
'runtimepath'
の値がcp932で入っていますね。(これで良いのかは分からないけど)
:scriptnames
したら以下のように表示されました。
1: C:\temp\<93><fa><96>{<8c><ea>\vim\vimrc
2: C:\temp\<93><fa><96>{<8c><ea>\vim\plugins\kaoriya\encode_japan.vim
3: C:\temp\<93><fa><96>{<8c><ea>\vim\plugins\kaoriya\autoload\kaoriya\switch.vim
4: C:\temp\<93><fa><96>{<8c><ea>\vim\vim73\vimrc_example.vim
5: C:\temp\<93><fa><96>{<8c><ea>\vim\vim73\syntax\syntax.vim
6: C:\temp\<93><fa><96>{<8c><ea>\vim\vim73\syntax\synload.vim
7: C:\temp\<93><fa><96>{<8c><ea>\vim\vim73\syntax\syncolor.vim
8: C:\temp\<93><fa><96>{<8c><ea>\vim\vim73\filetype.vim
9: C:\temp\<93><fa><96>{<8c><ea>\vim\vim73\ftplugin.vim
10: C:\temp\<93><fa><96>{<8c><ea>\vim\vim73\indent.vim
11: C:\temp\<93><fa><96>{<8c><ea>\vim\_vimrc
12: C:\temp\<93><fa><96>{<8c><ea>\vim\vim73\syntax\nosyntax.vim
13: C:\temp\日本語\vim\vim73\menu.vim
14: C:\temp\日本語\vim\gvimrc
15: C:\temp\日本語\vim\vim73\gvimrc_example.vim
16: C:\temp\日本語\vim\_gvimrc
ちなみにset enc=utf8
をコメントにしたら発生しませんでした。
とりあえず情報のみ。
じつはこれ、原因しってるんだーw
encoding変更前の状態だとcp932になってるはずなんですが、まずそのエンコーディングでrtpが決定してしまい、encodingを変更するとそこからrtpがutf-8に変わる。よって古いrtpが不正になる...。
これ前にvim_devに流れた気がする。
あ。うっすらと記憶にあるかもw
解決策としてはencを変えた瞬間に、いくつかのオプションの値を変換する必要があるってことかな?
ですね。
set encoding=utf-8
let &rtp=iconv(&rtp, 'cp932', 'utf-8')
的なworkaroundもあるかと思いますが、オフィシャルから直したいかも
とりあえずはrtpだけでも良いけど、理想を言えば全部の文字列型オプションだよね?
デフォルトのrtpが決定する段階で、scriptencodingの様な扱いを持っていれば、全て解決しそうな気もしなくない。
スクリプトでやるならEncodingChangedイベント…か。変更前のエンコードわかんないとダメだけどw
win版はもう完全ユニコード化して欲しいです。 A系API呼び出しを全廃したい。 できたらいいなー。
この前、bramが「enc!=utf-8」使ってる人なんてまだいたの的な発言をしててフイた
DOSのプログラムすらまだ動くしなぁw
とりあえずKaoriYa版はあとでencode_japan.vimに対策してみます。 autocmd EncodingChangedでrtpとか変換する予定。
できたら試験ヨロです。
明日試すことをメモのためにリストしておきます。
- enc=utf-8の設定で起こる?
- 起動オプションで-u NONE -U NONEするとどうなる?
- kaoriya版だけでなく本家Vimを起動するとどうなる?
試した結果を貼っておきます。 vim_jp@googlegroups.comに送ったメールを引用します。
https://github.com/vim-jp/issues/issues/103 なんだかmattnさんKoRoNさんが核心に近づいているので検証しなくてもいい気がしますが、一応検証結果をメモしておきます。 あとでissuesの方には追加します。
明日試すことをメモのためにリストしておきます。
enc=utf-8の設定で起こる?
.vimrcの「set enc=utf-8」の部分をコメントアウトしたらエラーメッセージが出なくなったのでそのようです。
起動オプションで-u NONE -U NONEするとどうなる?
kaoriya:エラーが出ませんでした。 本家:エラーが出ませんでした。
kaoriya版だけでなく本家Vimを起動するとどうなる?
エラーメッセージは出ませんでしたが、vimの起動画面とメニューが盛大に文字化けしました。(添付してあります) やはり.vimrcの「set enc=utf-8」をコメントアウトしたら正常に起動しました。
本家Vimは下記URLから取得しました。 http://www.vim.org/download.php#pc
Runtime files vim##rt.zip vim73_46rt.zip GUI executable gvim##.zip gvim73_46.zip
$ unzip gvim73_46.zip $ unzip vim73_46rt.zip して「vim/vim73/gvim.exe」を実行しました。
できたら試験ヨロです。
了解です!
作ってみた。ちょっとしたテストでは大丈夫だったけど…どうかな?
おっと。last_encの更新忘れてた。というわけで一行だけ追加した。
ポイントを抜粋しておきます。
"===========================================================================
" パスに日本語を含む際にencを変更した場合の処置.
let s:last_enc = &enc
function! s:OnEncodingChanged()
" runtimepath(rtp)を変換する.
if s:last_enc !=# &enc
let &rtp = iconv(&rtp, s:last_enc, &enc)
let s:last_enc = &enc
endif
endfunction
augroup EncodeJapan
autocmd!
autocmd EncodingChanged * call <SID>OnEncodingChanged()
augroup END
エラー出ませんでした。 最新版のvimにはすでにencode_japan.vimが含まれているようなので同じくエラー出なかったです。
2011/12/11 MURAOKA Taro < reply@reply.github.com
ポイントを抜粋しておきます。
"=========================================================================== " パスに日本語を含む際にencを変更した場合の処置. let s:last_enc = &enc function! s:OnEncodingChanged() " runtimepath(rtp)を変換する. if s:last_enc !=# &enc let &rtp = iconv(&rtp, s:last_enc, &enc) let s:last_enc = &enc endif endfunction augroup EncodeJapan autocmd! autocmd EncodingChanged * call <SID>OnEncodingChanged() augroup END
Reply to this email directly or view it on GitHub: https://github.com/vim-jp/issues/issues/103#issuecomment-3095037
@tyru おそらくメーラから送ったせいか、JISになってたのでnkfして貼りなおしておきました。
これ、どうしようか?
少なくともドキュメントには記載したほうが良いのかなぁ。
この前、bramが「enc!=utf-8」使ってる人なんてまだいたの的な発言をしててフイた
Windows環境では多そう……。 utf-8でない場合、外部コマンドとのencoding変換が鬼門ですからね。
本質的な問題は #229 にて継続ってことでこっちは閉じます。
vim_jp@googlegroups.comにも送りましたが、 パスがマルチバイトを含む場合にエラーになります。 空白を含むパスは大丈夫のようです。
menu.vimの方は分かりませんが、 gvimrcで出たエラーはkaoriya版のみの問題かと思います。
エラー
.vimrc
:version
の結果