« Yash 2 その 89 | トップページ | テレビ番組等感想 その 180 »

2009年3月27日 (金)

Gvim on Windows: フォント設定

Windows 上で gvim を動かすことに関してはすでにネット上にいろいろ情報があるが、フォントの設定に関して少しここにメモしておく。

取り敢えずここでは GUI ではない vim については無視する。コマンドプロンプトの中でわざわざ無理に vim を使うことなどなかろう。(gvim と vim を両立させようとするといろいろうまく動かない点もあるし)

Windows 版の gvim は utf-8 とその他の多バイトエンコーディングとの変換が下手らしく、文字化けへの対処にいろいろ手をかけさせられる。まず、この国際化時代に日本語しか扱えないというのは話にならないので、encoding オプションを utf-8 に設定するわけだが、普通の日本語環境でこれをやるとエラーメッセージなどが文字化けする。これを直す方法はいまだに分かっていない (※)。とりあえず _vimrc に language C と書いてメッセージを英語にすることで逃げている。(こうすればメッセージが英語になる点以外は目立った不都合はない)これを直すにはライブラリを入れ替える必要がある。

で、Windows の gvim でフォントを設定するには guifont オプションと guifontwide オプションを使う。前者がいわゆる半角文字のフォント、後者が全角文字のフォント。どちらもカンマで区切って複数のフォントを指定できる (最初に利用可能なフォントが選ばれる)。例えば _gvimrc に以下のように書く:

set guifont=Consolas:h10,Lucida_Console:h10:w5 guifontwide=MS_Gothic:h10

h10はフォントの高さを 10 ポイントにする指定。同様にw5は幅を 5 ポイントにする。

半角と全角でフォントを使い分ける必要がない場合は guifont だけ設定すればよい。

もう一つ忘れてはならないのは ambiwidth オプション。これは一部の文字を半角として扱うか全角として扱うかを指定する。例えばαなどの文字は一般的な日本語環境では全角文字とみなされているが、そもそも半角と全角の区別のない欧米環境ではこのような文字も全て半角とみなされる。このように環境によって半角だったり全角だったりする文字の扱い方を指定するのが ambiwidth オプションで、デフォルトではこのオプションの値は single になっている (すなわち半角文字として扱う) が、従来の日本語環境に合わせたいのならこのオプションは double に設定するとよい。ambiwidth が single になっていると guifont で指定したフォントを使って半角文字として表示されるが、ambiwidth を double にすると guifontwide で指定したフォントで全角文字として表示される。


※ 言語リソースファイルのエンコーディングが CP932 になっているので、これを UTF-8 に変換すれば何とかなりそうな気がする、というかそうしている例がある。

|

« Yash 2 その 89 | トップページ | テレビ番組等感想 その 180 »

コメント

CUI 版の vim で set encoding=utf-8 したい場合は、set termencoding=cp932 するといいみたい。

投稿: | 2010年3月30日 (火) 12時24分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/169172/44482906

この記事へのトラックバック一覧です: Gvim on Windows: フォント設定:

» 【GVim】Proggy + Osakaで快適コーディング [blog.remora.cx]
Windows版のGVimでフォントを指定するときは「guifont」「guifontwide」の二種類を指定する必要がある……というのを今日初めて知った。前者は半角、後者は全角のフォントを指定する。今までは前者しか指定してなかったので、全角文字についてはレジストリをいじってFontLinkを使うことで対処していた。 Windows 2000/XPのFont Link機能(Font Linking)の紹介 http://blue.ribbon.to/~akene/fontlink.htm これでも... [続きを読む]

受信: 2010年3月23日 (火) 19時18分

« Yash 2 その 89 | トップページ | テレビ番組等感想 その 180 »