VIMまたはGvimでUTF-8文字を表示する方法


106

私は時々英語以外のスクリプトを含むWebページで作業します。それらのほとんどはutf-8文字セットを使用しており、VIMおよびGvimはUTF-8文字を正しく表示しません。

Windows 7 64ビットでVIM 7.3.46を使用し、 set guifont=Monaco:h10 _vimrcで

これを修正する方法はありますか?

更新:探し回って見つけました set guifontwide、地域の言語の2番目のフォールバックとして機能する。

_vimrcに次の行を追加すると、ほとんどの問題が解決しました。

set enc=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf8,prc
set guifont=Monaco:h11
set guifontwide=NSimsun:h12

上記のNSimsunフォントは中国語で機能します。問題は、フォント名がVIMで機能するようにした方法がわからないことです。また、フォントディレクトリのどこにもCourier New記載されCourier_NewNSimsunいません。使用したいフォントですがLatha、_vimrcファイルで使用する方法がわかりません。set guifontwide=latha:h12またはset guifontwide=Latha:h12動作しません。

をに正常に設定しguifontwidelatha場合、私の問題は解決されます。


値何である'guifont'との値は'guifontwide'?また、使用しているOSとvimのバージョンは何ですか?
Benoit

サティシュ、これに対する解決策を見つけることができましたか?eKalappaiソフトウェアでgVimを入力しようとしていますが、vimでしか表示されません?? 文字(どうやら同じ方法でそれらを保存します)。
sundar-モニカを再開13年

@sundarいいえ。あきらめました:|
Sathish Manohar 2013

私の問題は、inconsolata-gがドキュメントのutf-8文字をサポートしていないことでした。
AndrewPK 2013年

set guifontwide=NSimsun:h12「無効なワイドフォント」と同じように使用すると失敗しますが、おそらくモノスペース以外の問題ですか?
mikew 2015年

回答:


61

次を使用してドキュメントをリロードしてみてください:

:e! ++enc=utf8

それが機能する場合fileencodingsは、.vimrcの設定を変更する必要があり ます。


2
私にとって何も変わらない
トーマス・レベスク

8
変更を消去するため、作業を保存する前にこれを実行しないでください。:uでもあなたを救うでしょう。

また、これによりファイルが読み取り専用に設定されるため、実行する必要があります:set noro
Matt Vukomanovic

2
これをありがとう。私の場合、Vimはutf-8をレンダリングしていませんでした。バイナリデータのブロック(multipart / form-dataアタッチメントパーツ)があったためです。私がしたとき:e! ++enc=utf8、それはutf-8をレンダリングしましたが[ILLEGAL BYTE in line 286]、ファイル内で(最初のバイナリパートライン)不平を言いました。Vimを開いたときにデフォルトの動作が発生すると、暗黙的に他のエンコーディングにフォールバックすることになると思います。ただし、何らかの理由で、echo &encその場合でも依然としてutf-8が報告されます。
ドミトリーミンコフスキー2017年

1
@DmitryMinkovsky &encは、vimがバッファーの内容を格納するために内部的に使用するエンコーディングです。現在のファイルのエンコーディングを含む設定は&fenc
Benoit

60

試しましたか

:set encoding=utf-8
:set fileencoding=utf-8


5
これらの設定を両方試してみましたが、それでもutf-8文字が表示されません。
Sathish Manohar、2011

1
-1。これは実際には機能しません。これらのオプションはどちらもファイルを再ロードしません。1つ目はvimがバッファー(およびその他のもの)を内部的に保存する方法を変更し、2つ目は既にバッファーにロードされているファイルのエンコードを変更することを指定します。これは保存時に適用されます。
Benoit

:set encoding=utf8 WILLバッファを更新し、問題が間違ったエンコーディングにあったならば、それはそれを修正します。set fileencoding=utf8保存時に最も紛らわしい「一部の文字を変換できません」エラーが発生しないようにオプションを追加しました。
Maxim Sloyko

セットエンコーディングが機能しました。set encoding = utf8を.vimrcファイルに追加しましたが、utf8ですべて問題ありません。
Alexander Kim

OSX上で、私は私に(コロンなし)の2行を追加しました~/.vimrcし、それがうまく働いた
lionello

7

日本人がここに来たら、次の行をあなたの ~/.vimrc

set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
set fileformats=unix,dos,mac

6

Microsoft Windowsでは、gvimでは、等幅フォント以外のフォントを選択できません。残念ながらLathaは等幅フォントではありません。

それを実現するためのハックの方法があります:使用してFontForgeは(あなたがからWindowsバイナリダウンロードすることができhttp://www.geocities.jp/meir000/fontforge/を編集Latha.ttfに)と等幅フォントとしてそれをマークします。このようにします:

  1. fontforgeをロードし、latha.ttfを選択します。
  2. メニュー:要素->フォント情報
  3. フォント情報ダイアログの左側のリストから「OS / 2」を選択します
  4. 「Panose」タブを選択
  5. 比率を設定=等幅
  6. このフォントの新しいTTFバージョンを保存して、試してみてください!

幸運を!


1
lathaフォントをモノスペースに変更できませんでした。私はあなたの手順を正確に踏襲しましたが、保存されたファイルはまだ等幅フォントとして機能しません:(
Sathish Manohar '25

1
@Sathish Manohar 1)既存のTTFファイルを上書きし、Windowsを再起動して試してください。または2)TTFを新しいファイルに保存し、フォント名を変更できます。新しいTTFファイルをインストールします。この新しいフォントがリストに表示されているはずです。
Yi Zhao

これらすべての年(7年)が経過した後、VIMで使用できるいくつかのフリーフォントがあります。Google Notoフォントgoogle.com/get/noto ; およびIosveka github.com/be5invis/Iosevka/releasesは、評価する非常に優れた代替手段です。
Yi Zhao

3

Linuxでは、VIM構成ファイルを開きます。

$ sudo -H gedit /etc/vim/vimrc

次の行を追加しました:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

保存して終了し、端末コマンド:

$ source /etc/vim/vimrc

現時点では、VIMは中国語を正しく表示します。


2

その間にこの問題は解決されましたか?

私はgvimがすべてのユニコード文字(ウムラウトやアクセント付き文字を含むサブセットのみ)を表示しないのに、:set guifont?空であるという問題がありました。私の質問を参照しください。ここを読んだ後guifont、を適切な値に設定することで修正されました。ただし、2バイトを超える文字は必要ありません。


1
guifontの実用的な値は何ですか?何を入れましたか?
クリスチャン

この回答で私に役立つ値をリストしました。
Tobias

2

インストールした他のフォントをWindows GVimエディターに表示することができなかったのでLucida Console、少なくともいくらか優れたUTF-8サポートを備えたフォントに切り替えました。これをあなたの最後に追加してください_vimrc

" For making everything utf-8
set enc=utf-8
set guifont=Lucida_Console:h9:cANSI
set guifontwide=Lucida_Console:h12

現在、少なくともいくつかのUTF-8文字が表示されています。


私の場合にはcANSIはcGREEKに変更する必要がありました(編集- > gvimをで選択フォント...)Consolasフォントと、正しくギリシャ文字とUTF-8エンコードされたテキストファイルを表示するために
hello_earth

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.