Up: 目次   [Index]


マルチバイトテキストのサポート

*mbyte.txt*     For Vim バージョン 8.1.  Last change: 2019 Jul 04

		  VIMリファレンスマニュアル	  by Bram Moolenaar et al.

マルチバイトサポート このファイルでは、中國語、日本語、韓國語などの、1 バイト (オクテット) では表現することができないほど多くの文字を持つ言語の、テキストの編輯について說明する。Unicode についても說明する。

ユーザーマニュアルの |usr_45.txt| で、共通する事柄を簡單に紹介してゐる。メッセージやメニューの言語を變更するには |mlang.txt| を參照。

1. はじめに|mbyte-first|
2. ロケール|mbyte-locale|
3. エンコーディング|mbyte-encoding|
4. 端末の使用|mbyte-terminal|
5. X11 のフォント|mbyte-fonts-X11|
6. MS-Windows のフォント|mbyte-fonts-MSwin|
7. X11 での入力|mbyte-XIM|
8. MS-Windows での入力|mbyte-IME|
9. キーマップを使用した入力|mbyte-keymap|
10. imactivatefunc() を使用した入力|mbyte-func|
11. UTF-8 を使ふ|mbyte-utf8|
12. 主なオプション|mbyte-options|

Note:
このファイルには Unicode の文字が含まれてゐる。他のエンコーディングを使用してゐる場合は、變な文字、あるいは四角形として表示されるかもしれない。

1. はじめに (Getting started)

Vim のマルチバイト機能を簡單に紹介する。運が良ければ、說明したことがそのまま機能して、なんのトラブルもなしに Vim を使ひ始めることができる。さうでない場合は、このファイルをさらに讀み進める必要がある。Vim のマルチバイト機能を使用できるやうにするために、多少の手閒や試行錯誤が必要であつても驚かないで欲しい。不幸なことに、すべてのシステムはそれぞれ獨自の方法でマルチバイト言語を扱つてゐて、それは實に複雜である。

ロケール

まづは、ロケールが正く設定されてゐることを確認する。システムの言語が正しく設定されてゐれば、マルチバイト機能をすぐに使用することができる。設定されてなくても、環境變數 $LANG をシェルから設定すれば、大抵は使用できるやうになる:

setenv LANG ja_JP.EUC

不幸なことに、ロケールの名前はシステムごとに違ふ。日本語なら "ja_JP.EUCjp" や "ja" などがある。現在の設定を確認するには:

:language

Vim が內部で使用するロケールを變更するには:

:language ja_JP.EUC

その設定が機能しない場合はエラーメッセージが表示される。使用したい言語のロケール名を見附けるためにいくつか試してみると良い。しかし、Vim は起動時にシステムのロケールを適切に使用するので、シェルでロケールを設定するのが無難である。

詳細は |mbyte-locale| を參照。

エンコーディング

ロケールが適切に設定されてゐれば、オプション ’encoding’ はそれに應じた値に設定される。それが機能しないときは、自分で設定しなほすこともできる:

:set encoding=utf-8

設定できる値の一覽は |encoding-values| を參照。

この設定は Vim 內部でテキストを保持するためのエンコーディングとして使用される。バッファのテキストだけでなく、レジスタや變數のエンコーディングとしても使用される。そのため、’encoding’ の設定を變更すると、すでに內部にあるテキストは不正なテキストになつてしまふ。テキストは新しいエンコーディングに變換されず、閒違つた狀態で表示される。

encoding’ に設定されたのとは違ふエンコーディングのファイルも編輯することができる。Vim はファイルを開くときにエンコーディングを變換し、保存するときに元に戾す。’fileencoding’, ’fileencodings’, |++enc| を參照。

表示とフォント

端末 (のエミュレータ) で作業してゐるなら、端末が、Vim と同じエンコーディングを使用することを確認する。違ふなら、オプション ’termencoding’ を設定して、テキストが自動的に變換されるやうにする。

GUI で作業してゐるなら、’encoding’ に設定されたエンコーディングに對應したフォントを選擇する必要がある。フォントの設定は難しい。使用してゐるシステムやロケールなどに依存してゐる。X-Window 環境なら |mbyte-fonts-X11|、MS-Windows なら |mbyte-fonts-MSwin| を參照。

GTK+ 2 を使つてゐるなら、今讀んでゐるこの項目はほとんど讀まなくて良い。オプション ’guifontset’ はもう存在しない。’guifont’ を設定するだけですべてうまく機能する。システムに Xft2 と fontconfig が用意されてゐるなら、選擇したフォントが何かのグリフを含んでゐないときは、自動的に他の利用可能なフォントが使用される。オプション ’guifontwide’ はまだサポートされてゐるが通常は必要ない。自動的に選擇されるフォントが適切でない場合のみ設定する必要がある。

X11 ではオプション ’guifontset’ に複數のフォントを設定して、さまざまな文字を扱へるやうにする。韓國語での設定例:

:set guifontset=k12,r12

代はりに ’guifont’ と ’guifontwide’ を設定することもできる。’guifont’ は半角文字、’guifontwide’ は全角文字のためのフォントである。’guifontwide’ のフォントは ’guifont’ のちやうど 2 倍の幅でなければならない。 UTF-8 使用時の設定例:

:set guifont=-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1
:set guifontwide=-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646-1

guifont’ だけを設定した場合、Vim は ’guifontwide’ として使用できるフォントを見附けようとする。

入力

マルチバイト文字を入力するにはいくつかの方法がある:

オプション ’iminsert’, ’imsearch’, ’imcmdline’ を使用して、別の入力方法に切り替へたり、インプットメソッドを一時的に無效にしたりできる。

2. ロケール (Locale)

最も簡單なのは、システム全體のロケールを設定することである。しかし、作業してゐるシェルのみロケールを變更したり、Vim だけが特定のロケールを使用するやうにも設定できる。

ロケールって何?

世界にはたくさんの言語があり、少なくとも、それと同じ數だけ文化や環境がある。地域に對應した言語環境のことをロケール (locale) といふ。ロケールは、言語、文字セット、文字の整列順、日附の書式、通貨の書式、などの情報を含んでゐる。Vim にとつては言語と文字セットの情報だけが重要である。

システムがサポートしてゐるロケールのみ使用することができる。(特にアメリカなどでは) ほんの少しのロケールしか持つてゐないシステムもある。そのため、望みの言語を使用することができないかもしれない。追加パッケージでロケールをインストールできることもあるので、システムのドキュメントを確認すること。

ロケールがインストールされてゐる場所はシステムによりさまざまである。例へば "/usr/share/locale" や "/usr/lib/locale" などにある場合がある。システムのマニュアルの setlocale() を參照。

ロケールがインストールされてゐるディレクトリを見ればロケールの正しい名前がわかる。ほとんどの場合、大文字と小文字は區別されるので、例へば "ja_JP.EUC" と "ja_jp.euc" は異なる。いくつかのシステムは locale.alias といふファイルを持つてゐて、"nl" のやうな短い名前を使つて "nl_NL.ISO_8859-1" といふ完全な名前を指定できる。

Note:
X-Window は獨自のロケール機構を持つてゐる。そして不幸なことに、他で使用されてゐるものとは違ふロケール名を使用する。これは混亂の元である。Vim にとつては函數 setlocale() が使用するものが重要であり、それは通常、X-Window のものではない。何が實際に機能するのか、實驗してみる必要があるかもしれない。

ロケール |locale| の名前の (簡單な) 書式は:

        言語                    (language)
または  言語_地域               (language_territory)
または  言語_地域.コードセット  (language_territory.codeset)

地域は國を意味する (あるいはその地方)。コードセットは |charset| のこと。例へば、ロケール名 "ja_JP.eucJP" の意味は:

ja言語は日本語 (Japanese)
JP國は日本 (Japan)
eucJPコードセットは EUC-JP

同じ意味でも "ja", "ja_JP.EUC", "ja_JP.ujis" などの名前のこともある。不幸なことに、言語、地域、コードセット、を表す名前は統一されてをらず、システムによつて異なる。

ロケール名の例:

charsetlanguageロケール名
GB2312中國語 (簡體字)zh_CN.EUC, zh_CN.GB2312
Big5中國語 (繁體字)zh_TW.BIG5, zh_TW.Big5
CNS-11643中國語 (繁體字)zh_TW
EUC-JP日本語ja, ja_JP.EUC, ja_JP.ujis, ja_JP.eucJP
Shift_JIS日本語ja_JP.SJIS, ja_JP.Shift_JIS
EUC-KR韓國語ko, ko_KR.EUC

ロケールを使用する

システム全體のロケールを設定するには、システムのドキュメントを參照。恐らく、"/etc" 內の設定ファイルを編輯する必要がある。

シェルのロケールを設定するには、環境變數 $LANG を設定する。例へば、韓國語を使用するとき、ロケール |locale| の名前が "ko" なら、このやうに設定する:

sh:    export LANG=ko
csh:   setenv LANG ko

これを ~/.profile~/.cshrc に書いておけばいつでも設定された狀態にできる。

Vim が使用するロケールだけ設定するには |:language| コマンドを使ふ:

:language ko

これを ~/.vimrc に書いておけばいつでも設定された狀態にできる。

あるいは、特定の $LANG を設定した狀態で Vim を起動するには:

sh:    LANG=ko vim {vim-arguments}
csh:   env LANG=ko vim {vim-arguments}

このために、小さなシェルスクリプトを作成することもできる。

3. エンコーディング (Encoding)

Vim はオプション ’encoding’ を Vim 內部で使用するエンコーディングとして使用する。バッファ (メモリに讀み込まれたファイル) やレジスタ、變數など、すべてのテキストはこのエンコーディングでメモリに保存される。

文字セット (Charset) とコードセット (codeset) は「エンコーディング」の別名である。正確には違ふのだが、Vim を使用する上でそれは重要ではない。

文字は 1 バイト以上のバイトでエンコードされる。すべての文字が 1 バイトでエンコードされるものを私達はシングルバイトエンコーディングと呼ぶ。そのやうなエンコーディングとしては "latin1" がよく使用される。これは 256 文字を表現することができる。それには制禦文字も含むので、テキストとして使用できる文字はそれより少ない。

2 バイト以上を使つて文字を表現するものを、私達はマルチバイトエンコーディングと呼ぶ。これは 256 文字よりもつと多くの文字を表現することができ、ほとんどの東アジアの言語はこれを必要とする。

ほとんどのマルチバイトエンコーディングは 127 文字 (ASCII 文字の範圍) を 1 バイトで表現するため、使用する言語に關係なく、ASCII 文字だけのテキストをやり取りすることが簡單になつてゐる。したがつて、閒違つたエンコーディングが設定されてゐても、それを讀むことができるだらう。

多くのエンコーディングを使用することができる。大きく 3 つに分類すると:

18bitシングルバイトエンコーディング。256 文字を表現できる。アメリカやヨーロッパで使用される。例: ISO-8859-1 (Latin1)。すべての文字は 1 つ分の表示幅で表示される。(いはゆる半角)
22byteダブルバイトエンコーディング。10000 以上の文字を表現できる。アジアの國々で使用される。例: euc-kr (韓國語)。文字のバイト數と同じ數の表示幅で表示される。(2 バイトならひはゆる全角)
(euc-jp の 1 バイト目が 0x8e の文字 (半角カナ) は例外)
uUnicodeユニバーサルエンコーディング。他のエンコーディングを統合するもの。ISO 10646。100 萬以上の文字を表現できる。例: UTF-8。文字が使用するバイト數と表示幅の關係は複雜。

他のエンコーディングは Vim 內部のエンコーディングとして使用することはできないが、そのやうなエンコーディングのファイルを編輯することはできる。’fileencoding’ を參照。

Note:
すべてのエンコーディングは 0 から 128 までの文字が ASCII 文字と同じでなければならない (EBCDIC 用にコンパイルした場合は除く)。

encoding’ に設定できる値:

1latin18 ビット文字 (ISO 8859-1 及び cp1252)
1iso-8859-nISO_8859 シリーズ (n = 2 to 15)
1koi8-rロシア語
1koi8-uウクライナ語
1macromanMacRoman (Macintosh のエンコーディング)
18bit-{name}8ビットエンコーディングのどれか (Vim 特有の名前)
1cp437iso-8859-1 に類似
1cp737iso-8859-7 に類似
1cp775バルト語
1cp850iso-8859-4 に類似
1cp852iso-8859-1 に類似
1cp855iso-8859-2 に類似
1cp857iso-8859-5 に類似
1cp860iso-8859-9 に類似
1cp861iso-8859-1 に類似
1cp862iso-8859-1 に類似
1cp863iso-8859-8 に類似
1cp865iso-8859-1 に類似
1cp866iso-8859-5 に類似
1cp869iso-8859-7 に類似
1cp874タイ語
1cp1250チェコ語、ポーランド語など
1cp1251キリル語
1cp1253ギリシャ語
1cp1254トルコ語
1cp1255ヘブライ語
1cp1256アラビア語
1cp1257バルト語
1cp1258ベトナム語
1cp{number}MS-Windows: インストールされてゐるシングルバイトのコードページ
2cp932日本語 (Windows only)
2euc-jp日本語 (Unix only)
2sjis日本語 (Unix only)
2cp949韓國語 (Unix and Windows)
2euc-kr韓國語 (Unix only)
2cp936簡體中國語 (Windows only)
2euc-cn簡體中國語 (Unix only)
2cp950繁體中國語 (on Unix alias for big5)
2big5繁體中國語 (on Windows alias for cp950)
2euc-tw繁體中國語 (Unix only)
22byte-{name}Unix: ダブルバイトエンコーディングのどれか (Vim特有の名前)
2cp{number}MS-Windows: インストールされてゐるダブルバイトのコードページ
uutf-8UTF-8 にエンコードされた 32 ビットの Unicode (ISO/IEC 10646-1)
uucs-2UCS-2 にエンコードされた 16 ビットの Unicode (ISO/IEC 10646-1)
uucs-2leリトルエンディアンの ucs-2
uutf-16ucs-2 を擴張してさらに多くの文字を表現できるやうにしたもの
uutf-16leリトルエンディアンの utf-16
uucs-4UCS-4 にエンコードされた 32 ビットの Unicode (ISO/IEC 10646-1)
uucs-4leリトルエンディアンの ucs-4

{name} にはシステムがサポートしてゐるエンコーディングの名前を入れることができる。これらの名前はファイルのエンコーディングとロケールのエンコーディングを變換するときに iconv() に渡される。MS-Windows では "cp{number}" はコードページ番號である。

例:

:set encoding=8bit-cp1252
:set encoding=2byte-cp932

MS-Windows のコードページ 1252 は latin1 と良く似てゐる。實用的な理由から、2 つは同じエンコーディングとして扱はれ、latin1 と呼ばれる。0x80 - 0xA0 の文字を表示するかしないかは ’isprint’ で設定できる。

いくつかの別名を使用できる。別名は上記の名前のどれかとして解釋される。完全ではないが一覽を示す:

1ansilatin1 と同じ (廢止。後方互換性のために殘されてゐる)
2japan日本語: Unix では euc-jp、MS-Windows では cp932
2korea韓國語: Unix では euc-kr、MS-Windows では cp949
2prc簡體中國語: Unix では euc-cn、MS-Windows では cp936
2chineseprc と同じ
2taiwan繁體中國語: Unix では euc-tw、MS-Windows では cp950
uutf8utf-8 と同じ
uunicodeucs-2 と同じ
uucs2beucs-2 と同じ (ビッグエンディアン)
uucs-2beucs-2 と同じ (ビッグエンディアン)
uucs-4beucs-4 と同じ (ビッグエンディアン)
uutf-32ucs-4 と同じ
uutf-32leucs-4le と同じ
defaultencoding’ のデフォルト値を意味する。環境に依存する。

UCS コードにはバイト順の問題がある。これは扱ひが難しいので、可能なときにはいつでも UTF-8 を使用した方が良い。指定がなければビッグエンディアンを使用する (最上位バイトが最初にくる):

名前バイト列文字
ucs-211 221122
ucs-2le22 111122
ucs-411 22 33 4411223344
ucs-4le44 33 22 1111223344

MS-Windows はリトルエンディアンの UCS-2 を使用するので、MS-Windows では主に "ucs-2le" を使ふ。

良く似てゐるが區別されてゐるエンコーディングがある。Vim はそれらを別のエンコーディングとして扱ふため、エンコーディングの變換が行はれる。エンコーディングの變換ができないときや、よけいな變換を防ぎたいときは、他の名前を使ふ必要があるかもしれない:

cp932, shift-jis, sjis
cp936, euc-cn

通常、’encoding’ はロケールと同じ設定で、’termencoding’ は空になつてゐる。その場合、文字の入力と表示はそのロケールでエンコードされる。Vim 內部でも同じ文字表現を使ふ。

オプション ’encoding’ を設定して、Vim 內部で使用するエンコーディングを變更することができるが、入力と表示にはロケールが使用されるので、エンコーディングの變換が必要になる。そのときは ’termencoding’ がロケールのエンコーディングとして使用される。Vim は ’encoding’ と ’termencoding’ の閒でエンコーディングを變換する。例:

:let &termencoding = &encoding
:set encoding=utf-8

すべてのエンコーディングの組み合はせが利用できるわけではない。下記の表にどのやうなものが機能するか示す。すべての變換が可能なわけではなく、iconv() が常に使用できるとは限らないので、利用できないものもある。これはシステムに依存することなので細部まで說明することはできない。

(’tenc’ は ’termencoding’ の省略、’enc’ は ’encoding’ の省略)

tencenc說明
8bit8bit機能する。’termencoding’ と ’encoding’ が違ふときは、變換することができないいくつかの文字は入力と表示が正しく行はれない。(そのやうな文字を得るには ’encoding’ を "utf-8" に設定する)
8bit2byteMS-Windows: インストールされてゐるすべてのコードページで機能する。8 ビットの文字だけ入力することができる。
他のシステム: 機能しない。
8bitUnicode機能するが、8 ビット文字しか直接入力できない(他の文字は DIGRAPH、キーマップなどで入力できる)。端末には 8 ビット文字しか表示できない。GUI では ’guifont’ がサポートしてゐる文字であれば表示できる。
2byte8bit機能するが、非 ASCII 文字を入力するには問題がある。
2byte2byteMS-Windows: インストールされてゐるすべてのコードページで機能する。’encoding’ をロケールと違ふ設定にすると入力に問題あり。
他のシステム: ’termencoding’ と ’encoding’ が同じ場合のみ機能する。’termencoding’ は空にしておいたはうが良い。
2byteUnicode機能する。Vim は入力された文字を變換する。
Unicode8bit機能する。(普通はこうしない)
Unicode2byte機能しない。
UnicodeUnicode問題なく機能する。(Vim 內部では Unicode はすべて UTF-8 で扱はれるため、’termencoding’ が空でも同じく機能する)

エンコーディングの變換

Vim はいろいろな場面で自動的にエンコーディングを變換する:

ほとんどの變換は |+iconv| の機能が必要である。ファイルを讀み書きするときの變換の動作はオプション ’charconvert’ での指定もできる。

エンコーディングを變換するための便利なユーティリティ:

All: iconv

GNU iconv はほぼすべてのエンコーディングを變換できる。變換の中閒層に Unicode を使用することで、多くの變換を可能にしてゐる。
http://www.gnu.org/directory/libiconv.html を參照。

日本語: nkf

"Network Kanji code conversion Filter"。最も特徵的な nkf の機能は漢字コードの自動認識である。そのため、ファイルのエンコーディング |charset| を知る必要がない。ISO-2022-JP や Shift_JIS を EUC-JP に變換するには、Vim からこのやうなコマンドを單に實行すれば良い:

:%!nkf -e

Nkf はここから入手できる:
http://www.sfc.wide.ad.jp/~max/FreeBSD/ports/distfiles/nkf-1.62.tar.gz
{譯注: utf-8 對應などの機能が追加されてゐるもの https://ja.osdn.net/projects/nkf/ }

中國語: hc

"Hanzi Converter"。Hc は GB から Big5 へ、Big5 から GB へ、の變換をする。Hc はここから入手できる:
ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz

韓國語: hmconv

Hmconv は E-mail を扱ふことに特化した韓國語エンコーディング變換ユーティリティである。EUC-KR と ISO-2022-KR の閒の變換ができる。Hmconv はここから入手できる:
ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/

多國語: lv

Lv は高性能な多言語ファイルビューアである。そして、エンコーディングの變換もできる。サポートしてゐるエンコーディング |charset| は: ISO-2022-CN, ISO-2022-JP, ISO-2022-KR, EUC-CN, EUC-JP, EUC-KR, EUC-TW, UTF-7, UTF-8, ISO-8859 シリーズ、Shift_JIS, Big5, HZ。Lv はここから入手できる: http://www.ff.iij4u.or.jp/~nrt/lv/index.html

encoding’ の設定と違ふエンコーディングのファイルを讀み書きするときは、エンコーディングを變換する必要がある。次の變換がサポートされてゐる:

MS-Windows では |+iconv/dyn| 機能つきで Vim をコンパイルすることができる。さうすると Vim は "iconv.dll" と "libiconv.dll" を檢索するやうになる。どちらも見つからない場合でも Vim は動作するが、變換ができなくなる。

4. 端末の使用 (Using a terminal)

GUI ではマルチバイト文字を完全にサポートしてゐる。端末を使ふ場合でも、Vim が使用するエンコーディングをサポートしてゐればマルチバイト文字を扱へるが、少し不便なこともある。

マルチバイト (と |XIM|) をサポートしてゐる xterm で Vim を使用することができる。他にも kterm (Kanji term), hanterm (韓國語用), Eterm (Enlightened terminal), rxvt、などが使用できる。

端末が適切なエンコーディングをサポートしてゐない場合はオプション ’termencoding’ を設定する。Vim は入力された文字を ’termencoding’ から ’encoding’ へと變換する。そして表示するときに ’encoding’ から ’termencoding’ へと變換する。端末のエンコーディングに、Vim が取り扱ふ文字がすべて含まれてゐない場合、文字の情報が失なわれてしまふ。下記で說明してゐる xterm のやうに、Unicode をサポートしてゐる端末なら問題はない。ほぼすべての文字セットは情報を失なわずに Unicode に變換できるからである。

UTF-8をXFree86 xtermで使ふ

{譯注: 最近の環境なら標準で使へるやうになつてゐる。}

これは Thomas Dickey によつて提供される XFree86 xterm で、どのやうにして UTF-8 エンコードされた文字を利用するかについての簡單な說明である (文: Markus Kuhn)。

UTF-8 をサポートしてゐる最新の xterm を入手すること:

http://invisible-island.net/xterm/xterm.html

"./configure --enable-wide-chars ; make" としてコンパイルすること。

また ISO 10646-1 バージョンのフォントを入手すること:

http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz

それから README ファイルの記述に從つてフォントをインストールすること。

そして xterm を起動する。

xterm -u8 -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1

大きな文字を使ふときは:

xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1

さうすると UTF-8 端末エミュレータが動作するだらう。ucs-fonts.tar.gz に含まれてゐる次の兩方のデモ・ファイルを試して:

cat utf-8-demo.txt
vim utf-8-demo.txt

xterm で UTF-8 が問題なく動作してゐるかどうか確認すること。

Vim の ’encoding’ を "utf-8" に設定する必要がある。

5. X11のフォント (Fonts on X11)

X11 でのフォントの取り扱ひは難しい。シングルバイトフォントの名前は長い文字列である。マルチバイトフォントを使ふにはさらにいくつか考慮することがある。

Note:
この說明のほとんどは GTK+ 2 にとつては關係ない。XLFD を用いたフォントの指定はサポートされてゐない。フォントの設定例は ’guifont’ を參照。下記の項 |XLFD| と |xfontset| は讀んでも讀まなくても良い。

Vim は固定幅のフォントだけを扱ふことができる。プロポーショナルフォントを使用することはできない。そのため多くの(見た目の良い)フォントは使用できない。しかし、メニューやツールチップにはどのフォントでも使用することができる。

Note:
表示と入力は獨立してゐる。入力したい言語のインプットメソッドがなくても、表示することはできる。

メニューやツールチップは標準設定のフォントでも機能するが、おそらくそれは、あまり見た目が良くない。より良いフォントを選ぶには下記の說明を參照。

X 論理フォント名 (X LOGICAL FONT DESCRIPTION (XLFD))

XLFD は X のフォント名であり、フォントサイズや文字セットなどの情報を含んでゐる。名前はこのやうな書式になつてゐる:

FOUNDRY-FAMILY-WEIGHT-SLANT-WIDTH-STYLE-PIXEL-POINT-X-Y-SPACE-AVE-CR-CE

各フィールドの意味:

例へば、JIS X 0208 に對應する 16 ドットのフォントは次のやうに書く:

-misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0

X フォントセット (X FONTSET)

シングルバイト文字セットは一般的に 1 つのフォントに關聯付けられてゐる。マルチバイト文字セットはほとんどの場合、複數のフォントの組合せを使用する。そして表示する文字に合つたフォントが選擇されて使用される。そのやうなフォントの集合をフォントセットと呼ぶ。

ロケールによつて必要なフォントは異なる。X-Window はロケールに必要な文字セットの表を管理してゐる。ロケールが必要とする全てのフォントをオプション ’guifontset’ に設定しなければならない。

guifontset’ オプションを設定すると、すべてのフォント名がフォントセット名として扱はれる。|:highlight| コマンドの "font" 引數に使用されるものもある。

Note:
guifont’ と ’guifontset’ の違ひに注意すること。’guifont’ では、コンマ區切りの名前は代替名で、そのうちの 1 つが使用される。’guifontset’ では、文字列全體が、コンマを含む1つのフォントセット名である。代替フォントセット名を指定することはできない。

この例は多くの X11 システムで動作する:

:set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-*

フォントは現在のロケールと一致しなければならない。現在のロケールで使用されてゐる文字セットのフォントが含まれてゐない場合、’guifontset’ の設定は失敗する。

Note:
encoding’ が、ロケールとは違ふ文字セットに設定されてゐても、フォントセットは常にロケールを使用する。さういふ場合は ’guifontset’ ではなく ’guifont’ と ’guifontwide’ を使用する。

例:

|charset|language"groups of characters"
GB2312簡體中國語ISO-8859-1 and GB 2312
Big5繁體中國語ISO-8859-1 and Big5
CNS-11643繁體中國語ISO-8859-1, CNS 11643-1 and CNS 11643-2
EUC-JP日本語JIS X 0201 and JIS X 0208
EUC-KR韓國語ISO-8859-1 and KS C 5601 (KS X 1001)

xlsfonts コマンドを使つてフォントを檢索できる。例へば、KS C 5601 のフォントを探すには:

xlsfonts | grep ksc5601

これは複雜で混亂しやすいことなので、分からないことは X-Window のドキュメントで調べること。

使用したいフォントの名前を見附けたらオプション ’guifontset’ を設定する。設定はフォントの名前をコンマで區切つて指定する。

例へば、ja_JP.eucJP ロケールの場合、JIS X 0201 と JIS X 0208 が必要である。次のやうに文字セットを明示的に指定してフォントを設定する:

:set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0,
       \-misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0

文字セットの名前を省略した場合、X-Window が、ロケールに必要なフォントを選擇する。例:

:set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140,
       \-misc-fixed-medium-r-normal--14-130-75-75-c-70

基本となるフォントの名前を 1 つだけ指定して、利用可能なすべてのフォントの中から選擇させることもできる。例:

:set guifontset=-misc-fixed-medium-r-normal--14-*

フォントの別名を指定することもできる。フォントディレクトリ (例へば /usr/X11R6/lib/X11/fonts/) のファイル fonts.alias を見ること。例:

:set guifontset=k14,r14

Note:
東アジアのフォントは、基本的には正四角形の範圍で表示される。ラテンフォントと東アジアのフォントを組み合はせた場合、東アジアのフォントはラテンフォントの 2 倍の幅で表示される。

guifontset’ が空の場合、コマンド |:highlight| の "font" 引數はフォントセットとして解釋される。例へばこのやうに使用する:

:hi Comment font=english_font,your_font

閒違つた "font" 引數を使用するとエラーメッセージが表示される。事前に ’guifontset’ を設定して確認すること。

リソースファイルを使ふ (USING RESOURCE FILES)

guifontset’ を設定する代はりに X11 のリソースを設定すれば、Vim はそれを使用する。これは X のリソースファイルの働きを知つてゐる人向けである。

Motif と Athena ではファイル $HOME/.Xdefaults にこの 3 行を追加する:

Vim.font: |base_font_name_list|
Vim*fontSet: |base_font_name_list|
Vim*fontList: your_language_font

Note:
Vim.font はテキストエリアの設定
Vim*fontSet はメニューの設定
Vim*fontList はメニューの設定 (Motif GUI用)

例へば、14 ドットの日本語フォントを使ふには:

Vim.font: -misc-fixed-medium-r-normal--14-*
Vim*fontSet: -misc-fixed-medium-r-normal--14-*
Vim*fontList: -misc-fixed-medium-r-normal--14-*

もしくは:

Vim*font: k14,r14
Vim*fontSet: k14,r14
Vim*fontList: k14,r14

この設定をすぐに反映させるには

xrdb -merge ~/.Xdefaults

もしくは X サーバーを停止して再起動する。

GTK+ 版の Vim は .Xdefaults を使はず ~/.gtkrc の設定を使用する。初期設定は恐らくうまく機能するが、メニューのフォントは變更した方がいいかもしれない。例:

style "default"
{
        fontset="-*-*-medium-r-normal--14-*-*-*-c-*-*-*"
}
widget_class "*" style "default"

6. MS-Windows のフォント (Fonts on MS-Windows)

最も簡單なのは、フォント選擇ダイアロクを使つてフォントを選擇して、試してみることである。メニューの "Edit/Select Font..." (編輯/フォント設定) を使用する。ちやうどいいフォントを見附けたら、このコマンドでフォントの名前を確認する:

:set guifont

そして、’guifont’ を設定するコマンドを |gvimrc| に追加する:

:set guifont=courier_new:h12

7. X11 での入力 (Input on X11)

X INPUT METHOD (XIM) の基礎智識

XIM は X の國際化入力機構である。Xlib ユニット型と |IM-server| (Input-Method server) 型の 2 種類がある。|IM-server| 型は CJK (日中韓) で使はれるやうな複雜な入力方式に適してゐる。

インプットメソッドサーバー (IM-server)

|IM-server| 型の入力方式では、FrontEnd システムか BackEnd システムのどちらかの方法で入力イベントを處理する。FrontEnd システムでは、まづ |IM-server| が入力イベントを取得し、そして入力の結果を |IM-server| からアプリケーションへ渡す。BackEnd システムではその逆の順番で處理される。

MS Windows は BackEnd システムを採用してゐる。X では、ほとんどの |IM-server| が FrontEnd システムを採用してゐる。BackEnd システムには通信のオーバーヘッドが大きく掛かるといふデメリットはあるが、アプリケーションに制限を加へず、安全に同期することができる。

たとへば xwnmo と kinput2 といふ日本語インプットメソッドサーバー |IM-server| があるが、兩方とも FrontEnd システムである。xwnmo は Wnn (下記參照) と一緖に提供されてゐる。kinput2 はここから入手できる: ftp://ftp.sra.co.jp/pub/x11/kinput2/

中國語用には、"xcin" といふよくできた XIM サーバーがあり、簡體中國語と繁體中國語の兩方を入力できる。適切な入力テーブルを作成すれば、他のロケールも受け付ける。Xcin はここから入手できる: http://cle.linux.org.tw/xcin/。他には scim: http://scim.freedesktop.org/ と fcitx: http://www.fcitx.org/ がある。

變換サーバー (Conversion Server)

いくつかのシステムではさらに、變換サーバーが必要である。ほとんどの日本語インプットメソッドサーバー |IM-server| は假名漢字變換サーバーを必要とする。中國語の入力では、入力方式に依存する。いくつかの方式では、PinYin や ZhuYin から HanZi への變換サーバーが必要である。韓國語の入力では、Hanja を入力するには、Hangul-Hanja 變換サーバーが必要である。

例へば、日本語の入力は 2 段階に分けられる。最初に平假名を入力し、次に漢字へ變換する。多くの漢字 (JIS X 0208 には 6349 文字が定義されてゐる) と 76 文字の平假名があるため、まづ平假名を入力し、必要なら、それを漢字や片假名に變換する。假名漢字變換サーバーには jserver (Wnn と一緖に提供されてゐる。下記參照) や canna などがある。Canna はここから入手できる: http://canna.sourceforge.jp/

Wnn4.2 といふよくできた入力システムがある。Wnn4.2 は以下のものを含んでゐる。

Wnn4.2 は多くのシステムで動作し、インターネットのさまざまな場所で入手することができる。あなたのシステム用の RPM や port を使用すること。

入力スタイル (Input Style)

CJK (日中韓語) を入力するとき、4 つの表示領域がある:

  1. 入力途中の文字を表示する領域
  2. 現在の入力モードを表示する領域
  3. 變換候補を表示する領域
  4. その他のツールを表示する領域

3 番目の表示領域は變換をするときに必要である。たとへば、日本語の入力では、同じ撥音の漢字が複數あるので、同じ平假名が複數の漢字に對應する。

1 番目と 2 番目の表示領域は X の國際化入力でそれぞれ "Preedit Area", "Status Area" と定義されてゐる。3 番目と 4 番目の表示領域は定義されてをらず、|IM-server| に任されてゐる。國際化入力では Preedit Area と Status Area の組み合せで 4 つの入力スタイルが定義されてゐる: |OnTheSpot| |OffTheSpot| |OverTheSpot| |Root|。

現在、GUI Vim は |OverTheSpot|, |OffTheSpot|, |Root| の 3 つのスタイルをサポートしてゐる。|+GUI_GTK| 機能付きでコンパイルされた場合は、GUI Vim は |OnTheSpot| と |OverTheSpot| の 2 つのスタイルをサーポートする。’imstyle’ オプションでスタイルを選擇することができる。

on-the-spot

Preedit Area と Status Area はアプリケーション領域にクライアントアプリケーションによつて表示される。クライアントアプリケーションはテキストを插入する位置に未確定文字をすべて表示するやうに |IM-server| から指示される。クライアントは、コールバック函數を登錄して、未確定文字の入力中にインプットメソッドから呼び出してもらふ。

over-the-spot

Status Area はアプリケーション領域の固定位置に作成される。Vim の場合は、ステータスライン付近である。Preedit Area はアプリケーションの入力してゐる位置に作成される。インプットメソッドは、テキストが插入される位置にあるウィンドウに未確定文字を表示する。

off-the-spot

Preedit Area と Status Area はアプリケーション領域に表示される。Vim の場合は、ステータスライン付近である。クライアントアプリケーションは表示ウィンドウを提供し、インプットメソッドが直接そこに未確定文字を表示する。

root-window

Preedit Area と Status Area はアプリケーションの外側に表示される。インプットメソッドは別に用意した自分のウィンドウに未確定文字をすべて表示する。

XIM を使用する (USING XIM)

Note:
表示と入力は獨立してゐる。インプットメソッドがなくてもあなたの言語を見ることができる。しかし、表示方法とインプットメソッドが合はないと、テキストは閒違つて表示される。

Note:
guifontset’ を設定しないとインプットメソッドを使用できない。從つて、ラテン語のユーザーも、インプットメソッドを使用するなら、’guifontset’ を設定しなければならない。

あなたの言語を入力するには、その言語をサポートしてゐるインプットメソッドサーバー |IM-server| を實行する。必要なら變換サーバー |conversion-server| も實行する。

次の 3 行を ~/.Xdefaults ファイルに書き込む。これは |XIM| を使用するすべての X アプリケーションに共通する設定である。すでに |XIM| を使用してゐる場合は、これを讀み飛ばすこと。

*international: True
*.inputMethod: your_input_server_name
*.preeditType: your_input_style
input_server_nameインプットサーバー |IM-server| の名前。(|IM-server| のマニュアルを確認すること)。
your_input_style|OverTheSpot|, |OffTheSpot|, |Root| のどれか。|xim-input-style| を參照。

X11R6 を使用してゐる場合、*international は必要ない。また、*.inputMethod と *.preeditType の指定は任意。

kinput2 を |IM-server| として使ふ場合の例:

*international: True
*.inputMethod: kinput2
*.preeditType: OverTheSpot

|OverTheSpot| を使用する場合、GUI Vim はノーマルモードでも常にインプットメソッドサーバーに接續する。そのため "f" や "r" コマンドであなたの言語を入力することができる。しかし、他の入力スタイルの場合は、GUI Vim はノーマルモードのときにはインプットメソッドサーバーに接續しない。

インプットメソッドサーバーが |OverTheSpot| をサポートしてゐない場合、"f" や "r" などのノーマルモードコマンドであなたの言語を使用するには、ローカライズされた xterm か、|XIM| をサポートした xterm を使用する。

必要なら、環境變數 XMODIFIERS を設定する:

sh:  export XMODIFIERS="@im=input_server_name"
csh: setenv XMODIFIERS "@im=input_server_name"

インプットメソッドサーバー |IM-server| に kinput2 を使用する場合の sh での設定例:

export XMODIFIERS="@im=kinput2"

XIM の制禦 (FULLY CONTROLLED XIM)

MS-Windows の IME (|multibyte-ime| 參照) のやうに、XIM を制禦することができる。この機能は現在 GTK GUI でのみ利用可能。

XIM を制禦するには、使用してゐるインプットメソッドのトグルキーを、オプション ’imactivatekey’ に設定する必要がある。たとへば、インプットメソッドサーバーに kinput2 + canna の組み合せを使用してゐる場合、トグルキーは恐らく Shift+Space なので、このやうに設定する:

:set imactivatekey=S-space

設定の書式は ’imactivatekey’ を參照。

8. MS-Windowsでの入力 (Input on MS-Windows)

Windows IME のサポート (Windows IME support)

{Windows の GUI 環境で |+multi_byte_ime| が有效な場合のみ利用可能}

Windows ではマルチバイト文字の入力に Input Method Editor (IME) を使ふことができる。IME を使つたテキストの入力では、IME の狀態をオンにしたりオフにしたり、何度も何度も切り替へなければならない。さうしないと、IME の狀態がオンのときには、キー入力はすべて IME に取られてしまふので、’j’ や ’k’ などほぼすべてのキーを、直接 Vim に入力することができない。

この |+multi_byte_ime| 機能はこれを手助けします。IME を手動で切り替へる回數を減少させます。マルチバイトテキストを編輯してゐるときでさへ、ノーマルモードでは IME を使用することはほとんどありません。そこで、插入モードを拔けるときに、Vim は IME の最後の狀態を記憶して IME をオフにします。插入モードに再び入つたときに、Vim は IME を自動的に記憶していた狀態に設定します。

これは插入モードとノーマルモードの閒だけでなく、コマンドラインや檢索コマンドの入力時や置換モードでも同じである。

オプション ’iminsert’, ’imsearch’, ’imcmdline’ を設定して、それぞれ別々に入力方法を選擇したり、無效にしたりできる。

IME について (WHAT IS IME)

IME は東アジア向けの Windows の一部で、マルチバイト文字を入力するためのものである。英語などの言語用の Windows には IME は搭載されてゐない (普通は必要ない)。しかし、Microsoft Global IME といふものがある。これは Internet Explorer4.0 以上に含まれてゐる。詳しいことは下記のURLを參照。

GLOBAL IMEについて (WHAT IS GLOBAL IME)

Global IME は Windows 95, Windows 98, Windows NT 4.0 のどの言語用のバージョンでも利用可能で、中國語、日本語、韓國語のテキストを Vim に入力することができる。

Windows 2000 や Xp でも問題なく使用できる (ダウンロードは必要ない)。Windows 2000 Professional には Global IME が組み込まれてをり、コントロールパネルの地域と言語のオプション/言語タブ/テキストサービスと入力言語の詳細ボタンから入力言語を追加できる。Global IME の詳細は下記のURLを參照。リンク先には Global IME の各國語用のバージョンもある。

Global IME のサポートは實驗的な機能である。

Note:
IME を使用するには入力したい言語をシステムに追加する必要がある。正確な設定方法は Windows のバージョンによつて違ふ。Windows XP の場合は:

  1. コントロールパネルを開く
  2. 地域と言語のオプションを開く
  3. 言語タブを選擇
  4. [テキストサービスと入力言語]エリアの詳細ボタンをクリック
  5. 追加ボタンをクリック

IME や XIM がオンのときのカーソルの色

IME の狀態に應じてカーソルの色を變へることができる。通常、IME の狀態はデスクトップの隅 (やタスクバー) に表示されてゐるが、これはあまり確認しやすくないので、この機能が役に立つ。これは XIM でも同じやうに機能する。

强調グループの CursorIM を設定して、IME の狀態がオンのときの色を選べる。たとへば、次の行を |gvimrc| に追加する:

if has('multi_byte_ime')
    highlight Cursor guifg=NONE guibg=Green
    highlight CursorIM guifg=NONE guibg=Purple
endif

これで、IME がオフならカーソルは綠、オンなら紫になる。

9. キーマップでの入力 (Input with a keymap)

キーボードから入力できない文字がある場合にはオプション ’keymap’ を使ふ。1 つ以上の (英語の) 文字を入力することで、別の (非英語の) 文字を入力することができる。この機能はテキストを入力するときだけ作用する。Vim コマンドを入力するときには作用しない。そのため、キーボードの設定を切り替へる手閒がない。

{Vimが |+keymap| 機能付きでコンパイルされたときにのみ利用可能}

オプション ’keymap’ に、使用したいキーマップファイルを指定する。ファイルの名前は次の 2 つのうちのどちらか:

keymap/{keymap}_{encoding}.vim
keymap/{keymap}.vim

{keymap} はオプション ’keymap’ に設定する値、{encoding} はオプション ’encoding’ の値。{encoding} 付きのファイル名が優先して使はれる。

キーマップファイルを探すために ’runtimepath’ が使はれる。利用可能なすべてのキーマップファイルを一覽するには、このやうにする:

:echo globpath(&rtp, "keymap/*.vim")

插入モードとコマンドラインモードでは、CTRL-^ を使つてキーマップを使用するかどうかを切り換へることができる。|i_CTRL-^| |c_CTRL-^|

插入モードでは、キーマップの狀態はオプション ’iminsert’ に記憶される。插入モードから拔けて、再び插入モードに入つたときに、以前の狀態が使はれる。|f| や |r| などの 1 つの文字を引數に取るコマンドでも同じ値が使はれる。

コマンドラインモードでは、キーマップの狀態は記憶されない。コマンドラインモードに入るとまづ、(ASCII 文字の) Ex コマンドを入力するはずだからである。

檢索パターンの入力では、オプション ’imsearch’ が使はれる。’iminsert’ と設定を共有するやうに設定することもできる。 キーマップ (言語マップ) を使用中に、GUI カーソルの色を變へることができる。もしも、非標準な背景色を使用してゐた場合にカーソルが見えなくなることがないやうに、初期狀態ではこの機能は無效になつてゐる。次の例では、カーソルの色が明るくなるやうにしてゐる:

:highlight Cursor guifg=NONE guibg=Green
:highlight lCursor guifg=NONE guibg=Cyan

キーマップファイルはこのやうな構成になつてゐる:

" Maintainer:   name <email@address>
" Last Changed: 2001 Jan 1

let b:keymap_name = "short"

loadkeymap
a       A
b       B       comment

「"」で始まる行はコメントなので無視される。空白行も無視される。マップを定義する行には役に立つコメントを書くことができる。

"b:keymap_name" にはステータスラインに表示される短い名前を設定できる。’keymap’ の値は、言語の違ひやキーボードやエンコーディングの違ひを區別するために長くなりがちだが、ステータスラインに表示できる文字には限りがあるので、この變數を使ふ。

實際のマップは "loadkeymap" 以下に書く。上の例では、"a" は "A" に、"b" は "B" にマップされる。このやうに、一番目のものが二番目にマップされる。そして、ファイルの末尾まで同じやうに處理される。

このやうに設定したマップは、|:lnoremap| に "<buffer>" を指定したバッファローカルなマップとまつたく同じである。

それはこのコマンドで確認できる:

:lmap

2 つの項目は空白で區切る。マップに空白を含めるには、"<Tab>", "<Space>" といふ特別な表記を使ふ。2 つの項目の文字の長さは、合はせて 200 バイトを超えてはいけない。

一番目の項目に複數の文字を指定することができる。これはデッドキーのやうな作用をする。例:

'a      á

クォートの入力があつたとき、次に "a" が入力されるかどうかわからないので、Vim は次の文字が入力されるまで待機する。シングルクォートを入力できるやうにするには、次の行も加へる:

''      '

マップは |:lnoremap| で定義されるので、結果のクォート文字は、他のマップの開始文字としては扱はれない。
{譯注: シングルクォートを入力できるやうにするには... ’timeout’ も參照。}

"accents" キーマップはこれを使用する。

最初の列は |<>| 表記で書くこともできる:

<C-c>           Ctrl-C
<A-c>           Alt-c
<A-C>           Alt-C

Note:
Alt マッピングは機能しないことがある。それはキーボードや端末に依存する。

二番目の項目に複數の文字を指定することもできるが、一般的ではない。しかし、文字を指定するのにいろいろな方法を使用して構はない:

A       a               literal character
A       <char-97>       decimal value
A       <char-0x61>     hexadecimal value
A       <char-0141>     octal value
x       <Space>         special key name

文字は現在の ’encoding’ と同じエンコーディングであるものとして扱はれる。":scriptencoding" でリテラル文字のエンコーディングを指定することができるが、<char-> 表記の文字には影響しない。なぜなら、キーマップファイルのエンコーディングが變換されるのであつて、<char-> の結果の文字は變換されないからである。

"loadkeymap" 以下の行は ’cpoptions’ に "C" を設定した狀態で解釋される。つまり、行の繼續は使用されない。バックスラッシュは特殊文字として扱はれる。例:

" a comment line
\"      x       " を x へマップ
\\      y       \ を y へマップ

他の人にも便利なキーマップファイルを作成したら、Vim の配布物に含めるために、Vim のメンテナーに提出することを檢討していただきたい:
<maintainer@vim.org>

ヘブライ語 キーマップ (HEBREW KEYMAP)

このファイルは UTF-8 と CP1255 のエンコーディングで利用可能な文字と、その文字を入力するためのキーマップを說明してゐる:

グリフ エンコード キーマップ

Charutf-8cp1255hebrewhebrewpname
א0x5d00xe0ta’alef
ב0x5d10xe1cbbet
ג0x5d20xe2dggimel
ד0x5d30xe3sddalet
ה0x5d40xe4vhhe
ו0x5d50xe5uvvav
ז0x5d60xe6zzzayin
ח0x5d70xe7jjhet
ט0x5d80xe8yTtet
י0x5d90xe9hyyod
ך0x5da0xealKkaf sofit
כ0x5db0xebfkkaf
ל0x5dc0xeckllamed
ם0x5dd0xedoMmem sofit
מ0x5de0xeenmmem
ן0x5df0xefiNnun sofit
נ0x5e00xf0bnnun
ס0x5e10xf1xssamech
ע0x5e20xf2gu‘ayin
ף0x5e30xf3;Ppe sofit
פ0x5e40xf4pppe
ץ0x5e50xf5.Xtsadi sofit
צ0x5e60xf6mxtsadi
ק0x5e70xf7eqqof
ר0x5e80xf8rrresh
ש0x5e90xf9awshin
ת0x5ea0xfa,ttav

母音マークと特別な句讀點:

Charutf-8cp1255hebrewhebrewpname
הְ0x5b00xc0A:A:sheva
הֱ0x5b10xc1HEHEhataf segol
הֲ0x5b20xc2HAHAhataf patah
הֳ0x5b30xc3HOHOhataf qamats
הִ0x5b40xc4IIhiriq
הֵ0x5b50xc5AYAYtsere
הֶ0x5b60xc6EEsegol
הַ0x5b70xc7AAAApatah
הָ0x5b80xc8AOAOqamats
הֹ0x5b90xc9OOholam
הֻ0x5bb0xcbUUqubuts
כּ0x5bc0xccDDdagesh
הֽ0x5bd0xcd]T]Tmeteg
ה־0x5be0xce]Q]Qmaqaf
בֿ0x5bf0xcf]R]Rrafe
ב׀0x5c00xd0]p]ppaseq
שׁ0x5c10xd1SRSRshin-dot
שׂ0x5c20xd2SLSLsin-dot
׃0x5c30xd3]P]Psof-pasuq
װ0x5f00xd4VVVVdouble-vav
ױ0x5f10xd5VYVYvav-yod
ײ0x5f20xd6YYYYyod-yod

以下は UTF-8 でのみ利用可能なもの

朗唱マーク:

グリフ

Charutf-8hebrewname
ב֑0x591C:etnahta
ב֒0x592Cssegol
ב֓0x593CSshalshelet
ב֔0x594Czzaqef qatan
ב֕0x595CZzaqef gadol
ב֖0x596Cttipeha
ב֗0x597Crrevia
ב֘0x598Cqzarqa
ב֙0x599Cppashta
ב֚0x59aC!yetiv
ב֛0x59bCvtevir
ב֜0x59cCggeresh
ב֝0x59dC*geresh qadim
ב֞0x59eCGgershayim
ב֟0x59fCPqarnei-parah
ב֪0x5aaCyyerach-ben-yomo
ב֫0x5abCoole
ב֬0x5acCiiluy
ב֭0x5adCddehi
ב֮0x5aeCnzinor
ב֯0x5afCCmasora circle

連結形:

Charutf-8hebrewname
0xfb20X‘Alternative ‘ayin
0xfb21X’Alternative ’alef
0xfb22X-dAlternative dalet
0xfb23X-hAlternative he
0xfb24X-kAlternative kaf
0xfb25X-lAlternative lamed
0xfb26X-mAlternative mem-sofit
0xfb27X-rAlternative resh
0xfb28X-tAlternative tav
0xfb29X-+Alternative plus
0xfb2aXWshin+shin-dot
0xfb2bXwshin+sin-dot
0xfb2cX..Wshin+shin-dot+dagesh
0xfb2dX..wshin+sin-dot+dagesh
0xfb2eXAalef+patah
0xfb2fXOalef+qamats
0xfb30XIalef+hiriq (mapiq)
0xfb31X.bbet+dagesh
0xfb32X.ggimel+dagesh
0xfb33X.ddalet+dagesh
0xfb34X.hhe+dagesh
0xfb35Xuvav+dagesh
0xfb36X.zzayin+dagesh
0xfb38X.Ttet+dagesh
0xfb39X.yyud+dagesh
0xfb3aX.Kkaf sofit+dagesh
0xfb3bX.kkaf+dagesh
0xfb3cX.llamed+dagesh
0xfb3eX.mmem+dagesh
0xfb40X.nnun+dagesh
0xfb41X.ssamech+dagesh
0xfb43X.Ppe sofit+dagesh
0xfb44X.ppe+dagesh
0xfb46X.xtsadi+dagesh
0xfb47X.qqof+dagesh
0xfb48X.rresh+dagesh
0xfb49X.wshin+dagesh
0xfb4aX.ttav+dagesh
0xfb4bXovav+holam
0xfb4cXRbbet+rafe
0xfb4dXRkkaf+rafe
0xfb4eXRppe+rafe
0xfb4fXalalef-lamed

10. imactivatefunc() を使用した入力 (Input with imactivatefunc())

Vim には ’imactivatefunc’ および ’imstatusfunc’ オプションがある。これらは外部コマンドやその他の方法によつて Vim からインプットメソッドを有效/無效するのに便利である。例として、fcitx は fcitx-remote コマンドを提供する:

set iminsert=2
set imsearch=2
set imcmdline

set imactivatefunc=ImActivate
function! ImActivate(active)
  if a:active
    call system('fcitx-remote -o')
  else
    call system('fcitx-remote -c')
  endif
endfunction

set imstatusfunc=ImStatus
function! ImStatus()
  return system('fcitx-remote')[0] is# '2'
endfunction

このスクリプトを使ふことによつて、Vim が |+xim| 付きでコンパイルされてゐない場合でも XIM を有效/無效にすることができる。

11. UTF-8 を使ふ

Unicode は、他の文字セットをすべて含むやうに設計された。そのため、どんな言語のテキストでも Unicode を使つて書くことができる (稀少な言語を除く)。そして、他のエンコーディングでは混在させることが不可能な言語でも、1 つのファイルに混在させることが可能である。

Unicode にはいくつかのエンコード法がある。もつとも一般的なのは、1 文字を 1 または複數バイトで表はす UTF-8 であり、ASCII と後方互換性がある。MS-Windows では UTF-16 も使はれる (以前は UCS-2 と呼ばれてゐた)。こちらは 16 ビットを基本單位とする。Vim はこれらのエンコーディングすべてをサポートしてゐるが、Vim で Unicode を使ふ場合、內部では常に UTF-8 が使はれてゐる。

Vim は幅廣く UTF-8 をサポートしてをり、それは以下の環境で機能する:

全角文字は ’guifontwide’ や ’guifontset’ を使ふと最もうまく表示することができる。’guifont’ だけを設定してゐる場合は、全角文字は通常の幅で描畫され、足りない幅が空白で埋められる。

Note:
オプション ’guifontset’ は GTK+ 2 GUI では使用しない。

ファイルを讀み込むとき、BOM (Byte Order Mark) があれば、その Unicode エンコーディングを判別するのに使はれる:

EF BB BF     utf-8
FE FF        utf-16 big endian
FF FE        utf-16 little endian
00 00 FE FF  utf-32 big endian
FF FE 00 00  utf-32 little endian

UTF-8 が推奬されてゐるエンコーディングである。UTF-16 と UTF-32 を區別するのは難しい。Windows では UTF-16 がしばしば使はれる。UTF-32 はファイルフォーマットとしては廣く使はれてゐない。

合成文字や結合文字を使ふと、先行文字の意味を變へることができる。結合文字は先行文字に重ねて描畫される。

デフォルトで2文字までの結合文字を扱ふことができる。この値はオプション ’maxcombine’ で變更できる。

テキストの編輯中は、合成文字は先行文字の一部として扱はれる。例へば、初期設定で は、"x" は文字を削除するときに、連なる合成文字をいっぺんに削除する。 オプション ’delcombine’ がオンのときには、’x’ は 1 回に 1 文字の結合文字を削除して、最後に基底文字を削除する。入力するときには、まづ 1 文字目を入力して、そして合成文字を入力する。すると、文字が合成される。"r" コマンドを使つて結合文字を入力することはできない。結合文字がさらに入力されるかどうか知ることができないからである。代はりに "R" を使ふ。

{譯注:

combining character結合文字
composing character合成文字
base character基底文字
preceding character先行文字?

}

UTF-8 として不正なバイト列はそれぞれ 1 バイトの文字として扱はれ、<xx> と表示される。この "xx" はそのバイトの 16 進數である。

Overlong sequence に對して特別な處理はされない。通常の文字と同じやうに表示される。Overlong sequence はどんな檢索パターンにもマッチしないかもしれない。

(Overlong sequence とは、文字を表すために必要なバイトよりも多くのバイトでその文字を表現してゐるバイト列のこと。) "<00>" と表示されてゐる NUL(zero) は例外。

{譯注: たぶん、"<00>" と表示されてる Overlong sequence だけはたとへ |/\_.| でもマッチしないといふこと。}

ファイルやバッファには、Unicode で表現できる範圍 (31ビット) の文字をすべて書くことができる。ただし、それを表示できるのは使用フォントがその文字を提供してゐる場合のみ。

便利なコマンド:

Vim を UTF-8 モードで起動する (STARTING VIM)

ロケールが UTF-8 の場合、Vim は自動的に UTF-8 モードで起動する。

UTF-8 以外のロケールを使つてゐる場合はこのやうにする:

set encoding=utf-8

メニューに使はれるフォントを變へる必要があるかもしれない。殘念ながら、これはいつもうまくいくとは限らない。システムに依存する說明は下記、または ’langmenu’ を參照。

X-Window で UTF-8 を使ふ (USING UTF-8 IN X-Windows)

Note:
この項は GTK+ 2 GUI には當てはまらない。

使用するフォントを選擇する必要がある。全角文字を表示するにはさらに別のフォントが必要。設定するには次の 3 つの方法がある:

  1. guifont’ を設定して、’guifontwide’ は Vim に設定させる
  2. guifont’ と ’guifontwide’ を設定する
  3. guifontset’ を設定する

詳細は各オプションの說明を參照。例:

:set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1

メニューで使用されるフォントも變更することができる。これは Motif でのみ機能する。":hi Menu font={fontname}" コマンドを使つて設定する。|:highlight|

UTF-8を入力する (TYPING UTF-8)

X-Window を使つてゐるなら、UTF-8 をサポートしてゐるインプットメソッド使用する。

システムが UTF-8 の入力をサポートしてゐない場合でも、’keymap’ を使つて入力することができる。ASCII 文字を複數入力することで UTF-8 の文字を入力するやうなキーマップファイルを作ることができる。|mbyte-keymap| を參照。

他にも、XIM を利用することができる言語に、ロケールを設定する方法がある。その場合は、’termencoding’ をその言語に設定する。Vim は入力された文字を ’termencoding’ から ’encoding’ へ變換する。

すべての方法が使へなくても、4 文字の 16 進數で文字コードを直接入力することができる:

CTRL-V u 1234

"1234" は 16 進數として解釋される。正しく 4 文字を入力しなくてはいけない。必要であればゼロを前置する。

コマンド引數 (COMMAND ARGUMENTS)

|f|, |F|, |t|, |r| のやうなコマンドは 1 つの文字を引數に取る。UTF-8 では 1 文字か 2 文字の合成文字の場合がある。Vim は合成文字の入力かどうかを調べるために次の入力を待つたりはしないため、合成文字は基底文字と同時に入力する必要がある。そのやうな文字は ’keymap’ や |:lmap| を使ふと簡單に入力することができる。

行內檢索をするコマンド {譯注: |f| など} は合成文字を次のやうに處理する。非合成文字を檢索するときは、合成されてゐる文字とされてゐない文字の兩方がマッチする。合成文字を檢索するときは、合成文字だけがマッチする。すべての人が合成文字を入力できるわけではないので、このやうになつてゐる。

{譯注: 例へば、か(U+304B) + 濁點(U+3099) といふ合成文字は "fか" でマッチする}

12. 主なオプション (Overview of options)

これらのオプションはマルチバイトテキストのファイルの編輯に關係する。詳細は options.txt の說明を參照。

encodingキーボード入力や表示に使はれるエンコーディング。これは新規ファイルのエンコーディングの初期設定でもある。
fileencodingファイルのエンコーディング。’encoding’ と違ふ場合、ファイルの讀み書き時にエンコーディングが變換される。
fileencodingsファイルに使ふことができるエンコーディングのリスト。ファイルを開くとき、リストの先頭から順番に變換を試して、エラーが起きなかつた最初のものが ’fileencoding’ として使はれる。
charconvertあるエンコーディングから別のエンコーディングへファイルを變換する式。
formatoptionsこのオプションにフラグ ’m’ を含めると、フォーマット時に、(文字のコードが 256 以上の) マルチバイト文字のところで改行することができる。これは、どこでも改行することができる言語を編輯するときに便利である。
guifontsetマルチバイトエンコーディングの文字に使ふフォントのリスト。このオプションが設定されてゐれば ’guifont’ の代はりに使用される。
keymapキーボードマッピングの名前を指定する。

マルチバイト機能は、特に以下の方々の貢獻による:

Chi-Deok Hwang <hwang@mizi.co.kr>
SungHyun Nam <goweol@gmail.com>
K.Nagano <nagano@atese.advantest.co.jp>
Taro Muraoka <koron@tka.att.ne.jp>
Yasuhiro Matsumoto <mattn@mail.goo.ne.jp>

Up: 目次   [Index]