Merge branch 'KaoriYa'
[MacVim/KaoriYa.git] / runtime / doc / mbyte.jax
blob87a638ed1f85295780b2242f7f5a515f503a27c3
1 *mbyte.txt*     For Vim バージョン 7.1.  Last change: 2006 Aug 11
3                   VIM REFERENCE MANUAL    by Bram Moolenaar et al.
6 マルチバイトサポート                              *multibyte* *multi-byte*
7                                                 *Chinese* *Japanese* *Korean*
8 このファイルでは、中国語、日本語、韓国語などの、1バイト(オクテット)では表現す
9 ることができないほど多くの文字を持つ言語の、テキストの編集について説明する。ユ
10 ニコードについても説明する。
12 ユーザマニュアルの|usr_45.txt|で、共通する事柄を簡単に紹介している。
13 メッセージやメニューの言語を変更するには|mlang.txt|を参照。
15 {|+multi_byte|が有効な場合のみ利用可能}
18 1.  はじめに                                |mbyte-first|
19 2.  ロケール                                |mbyte-locale|
20 3.  エンコーディング                    |mbyte-encoding|
21 4.  端末の使用                               |mbyte-terminal|
22 5.  X11のフォント                    |mbyte-fonts-X11|
23 6.  MS-Windowsのフォント             |mbyte-fonts-MSwin|
24 7.  X11での入力                             |mbyte-XIM|
25 8.  MS-Windowsでの入力                      |mbyte-IME|
26 9.  キーマップを使用した入力                |mbyte-keymap|
27 10. UTF-8を使う                            |mbyte-utf8|
28 11. 主なオプション                     |mbyte-options|
30 NOTE: このファイルにはユニコードの文字が含まれている。他のエンコーディングを使
31 用している場合は、変な文字、あるいは四角形として表示されるかもしれない。
33 ==============================================================================
34 1. はじめに (Getting started)                               *mbyte-first*
36 Vimのマルチバイト機能を簡単に紹介する。運が良ければ、説明したことがそのまま機
37 能して、なんのトラブルもなしにVimを使い始めることができる。そうでない場合は、
38 このファイルをさらに読み進める必要がある。Vimのマルチバイト機能を使用できるよ
39 うにするために、多少の手間や試行錯誤が必要であっても驚かないで欲しい。不幸なこ
40 とに、すべてのシステムはそれぞれ独自の方法でマルチバイト言語を扱っていて、それ
41 は実に複雑である。
44 コンパイル
46 コンパイル済みのVimをすでに持っているなら、|+multi_byte|機能が含まれているかど
47 うか確認する。|:version|コマンドで確認できる。
49 |+multi_byte|が含まれていないときは、Vimを"big"(たくさんの機能を含める構成)で
50 コンパイルする必要がある。コンパイルの際には、どの機能を含めるのか調整すること
51 ができる。ソースディレクトリのINSTALLファイルを参照。
54 ロケール
56 まずは、ロケールが正く設定されていることを確認する。システムの言語が正しく設定
57 されていれば、マルチバイト機能をすぐに使用することができる。設定されてなくて
58 も、環境変数$LANGをシェルから設定すれば、大抵は使用できるようになる: >
60         setenv LANG ja_JP.EUC
62 不幸なことに、ロケールの名前はシステムごとに違う。日本語なら"ja_JP.EUCjp"や
63 "ja"などがある。現在の設定を確認するには: >
65         :language
67 Vimが内部で使用するロケールを変更するには: >
69         :language ja_JP.EUC
71 その設定が機能しない場合はエラーメッセージが表示される。使用したい言語のロケー
72 ル名を見付けるためにいくつか試してみると良い。しかし、Vimは起動時にシステムの
73 ロケールを適切に使用するので、シェルでロケールを設定するのが無難である。
75 詳細は|mbyte-locale|を参照。
78 エンコーディング
80 ロケールが適切に設定されていれば、オプション'encoding'はそれに応じた値に設定さ
81 れる。それが機能しないときは、自分で設定しなおすこともできる: >
83         :set encoding=utf-8
85 設定できる値の一覧は|encoding-values|を参照。
87 この設定はVim内部でテキストを保持するためのエンコーディングとして使用される。
88 バッファのテキストだけでなく、レジスタや変数のエンコーディングとしても使用され
89 る。そのため、'encoding'の設定を変更すると、すでに内部にあるテキストは不正なテ
90 キストになってしまう。テキストは新しいエンコーディングに変換されず、間違った状
91 態で表示される。
93 'encoding'に設定されたのとは違うエンコーディングのファイルも編集することができ
94 る。Vimはファイルを開くときにエンコーディングを変換し、保存するときに元に戻
95 す。'fileencoding'、'fileencodings'、|++enc|を参照。
98 表示とフォント
100 端末(のエミュレータ)で作業しているなら、端末が、Vimと同じエンコーディングを使
101 用することを確認する。違うなら、オプション'termencoding'を設定して、テキストが
102 自動的に変換されるようにする。
104 GUIで作業しているなら、'encoding'に設定されたエンコーディングに対応したフォン
105 トを選択する必要がある。フォントの設定は難しい。使用しているシステムやロケール
106 などに依存している。X-Window環境なら|mbyte-fonts-X11|、MS-Windowsなら
107 |mbyte-fonts-MSwin|を参照。
109 GTK+ 2を使っているなら、今読んでいるこの項目はほとんど読まなくて良い。オプショ
110 ン'guifontset'はもう存在しない。'guifont'を設定するだけですべてうまく機能す
111 る。システムにXft2とfontconfigが用意されているなら、選択したフォントが何かのグ
112 リフを含んでいないときは、自動的に他の利用可能なフォントが使用される。オプショ
113 ン'guifontwide'はまだサポートされているが通常は必要ない。自動的に選択される
114 フォントが適切でない場合のみ設定する必要がある。
116 X11ではオプション'guifontset'に複数のフォントを設定して、さまざまな文字を扱え
117 るようにする。韓国語での設定例: >
119         :set guifontset=k12,r12
121 代りに'guifont'と'guifontwide'を設定することもできる。'guifont'は半角文字、
122 'guifontwide'は全角文字のためのフォントである。'guifontwide'のフォントは
123 'guifont'のちょうど2倍の幅でなければならない。
124 UTF-8使用時の設定例: >
126         :set guifont=-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1
127         :set guifontwide=-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646-1
129 'guifont'だけを設定した場合、Vimは'guifontwide'として使用できるフォントを見付
130 けようとする。
133 入力
135 マルチバイト文字を入力するにはいくつかの方法がある:
136 - X11ではXIMを使用できる。|XIM|を参照。
137 - MS-WindowsではIMEを使用できる。|IME|を参照。
138 - すべてのシステムでキーマップを使用できる。|mbyte-keymap|を参照。
140 オプション'iminsert'、'imsearch'、'imcmdline'を使用して、別の入力方法に切り替
141 えたり、インプットメソッドを一時的に無効にしたりできる。
143 ==============================================================================
144 2.  ロケール (Locale)                                       *mbyte-locale*
146 最も簡単なのは、システム全体のロケールを設定することである。しかし、作業してい
147 るシェルのみロケールを変更したり、Vimだけが特定のロケールを使用するようにも設
148 定できる。
151 ロケールってなに?                                       *locale*
153 世界にはたくさんの言語があり、少なくとも、それと同じ数だけ文化や環境がある。地
154 域に対応した言語環境のことをロケール(locale)という。ロケールは、言語、文字セッ
155 ト、文字の整列順、日付の書式、通貨の書式、などの情報を含んでいる。Vimにとって
156 は言語と文字セットの情報だけが重要である。
158 システムがサポートしているロケールのみ使用することができる。(特にアメリカなど
159 では)ほんの少しのロケールしか持っていないシステムもある。そのため、望みの言語
160 を使用することができないかもしれない。追加パッケージでロケールをインストールで
161 きることもあるので、システムのドキュメントを確認してください。
163 ロケールがインストールされている場所はシステムによりさまざまである。例えば
164 "/usr/share/locale"や"/usr/lib/locale"などにある場合がある。システムのマニュア
165 ルのsetlocale()を参照。
167 ロケールがインストールされているディレクトリを見ればロケールの正しい名前がわか
168 る。ほとんどの場合、大文字と小文字は区別されるので、例えば"ja_JP.EUC"と
169 "ja_jp.euc"は異る。いくつかのシステムはlocale.aliasというファイルを持ってい
170 て、"nl"のような短い名前を使って"nl_NL.ISO_8859-1"という完全な名前を指定でき
171 る。
173 Note: X-Windowは独自のロケール機構を持っている。そして不幸なことに、他で使用さ
174 れているものとは違うロケール名を使用する。これは混乱の元である。Vimにとっては
175 関数setlocale()が使用するものが重要であり、それは通常、X-Windowのものではな
176 い。何が実際に機能するのか、実験してみる必要があるかもしれない。
178                                                         *locale-name*
179 ロケール|locale|の名前の(簡単な)書式は:
181         言語                      (language)
182 or      言語_地域           (language_territory)
183 or      言語_地域.コードセット    (language_territory.codeset)
185 地域は国を意味する(あるいはその地方)。コードセットは|charset|のこと。例えば、
186 ロケール名"ja_JP.eucJP"の意味は:
187         ja      言語は日本語(Japanese)
188         JP      国は日本(Japan)
189         eucJP   コードセットはEUC-JP
190 同じ意味でも"ja"、"ja_JP.EUC"、"ja_JP.ujis"などの名前のこともある。不幸なこと
191 に、言語、地域、コードセット、を表す名前は統一されておらず、システムによって異
192 る。
194 ロケール名の例:
195     charset         language              locale name ~
196     GB2312          中国語 (簡体字)     zh_CN.EUC, zh_CN.GB2312
197     Big5            中国語 (繁体字)     zh_TW.BIG5, zh_TW.Big5
198     CNS-11643       中国語 (繁体字)     zh_TW
199     EUC-JP          日本語           ja, ja_JP.EUC, ja_JP.ujis, ja_JP.eucJP
200     Shift_JIS       日本語           ja_JP.SJIS, ja_JP.Shift_JIS
201     EUC-KR          韓国語           ko, ko_KR.EUC
204 ロケールを使用する
206 システム全体のロケールを設定するには、システムのドキュメントを参照。恐らく、
207 "/etc"内の設定ファイルを編集する必要がある。
209 シェルのロケールを設定するには、環境変数$LANGを設定する。例えば、韓国語を使用
210 するとき、ロケール|locale|の名前が"ko"なら、このように設定する:
212     sh:    export LANG=ko
213     csh:   setenv LANG ko
215 これを~/.profileや~/.cshrcに書いておけばいつでも設定された状態にできる。
217 Vimが使用するロケールだけ設定するには|:language|コマンドを使う: >
219         :language ko
221 これを~/.vimrcに書いておけばいつでも設定された状態にできる。
223 あるいは、特定の$LANGを設定した状態でVimを起動するには:
225    sh:    LANG=ko vim {vim-arguments}
226    csh:   env LANG=ko vim {vim-arguments}
228 このために、小さなシェルスクリプトを作成することもできる。
230 ==============================================================================
231 3.  エンコーディング (Encoding)         *mbyte-encoding*
233 Vimはオプション'encoding'をVim内部で使用するエンコーディングとして使用する。
234 バッファ(メモリに読み込まれたファイル)やレジスタ、変数など、すべてのテキストは
235 このエンコーディングでメモリに保存される。
237                                                         *charset* *codeset*
238 文字セット(Charset)とコードセット(codeset)は「エンコーディング」の別名である。
239 正確には違うのだが、Vimを使用する上でそれは重要ではない。
241 文字は1バイト以上のバイトでエンコードされる。すべての文字が1バイトでエンコード
242 されるものを私達はシングルバイトエンコーディングと呼ぶ。そのようなエンコーディ
243 ングとしては"latin1"がよく使用される。これは256文字を表現することができる。そ
244 れには制御文字も含むので、テキストとして使用できる文字はそれより少ない。
246 2バイト以上を使って文字を表現するものを、私達はマルチバイトエンコーディングと
247 呼ぶ。これは256文字よりもっと多くの文字を表現することができ、ほとんどの東アジ
248 アの言語はこれを必要とする。
250 ほとんどのマルチバイトエンコーディングは127文字(ASCII文字の範囲)を1バイトで表
251 現するため、使用する言語に関係なく、ASCII文字だけのテキストをやり取りすること
252 が簡単になっている。したがって、間違ったエンコーディングが設定されていても、そ
253 れを読むことができるだろう。
255                                                         *encoding-names*
256 多くのエンコーディングを使用することができる。大きく3つに分類すると:
258 1   8bit        シングルバイトエンコーディング。256文字を表現できる。アメリカ
259                 やヨーロッパで使用される。例: ISO-8859-1 (Latin1)。すべての文
260                 字は1つ分の表示幅で表示される。(いわゆる半角)
262 2   2byte       ダブルバイトエンコーディング。10000以上の文字を表現できる。ア
263                 ジアの国々で使用される。例: euc-kr (韓国語)。文字のバイト数と
264                 同じ数の表示幅で表示される。(2バイトならいわゆる全角)
265                 (euc-jpの1バイト目が0x8eの文字(半角カナ)は例外)
267 u   Unicode     ユニバーサルエンコーディング。他のエンコーディングを統合するも
268                 の。ISO 10646。100万以上の文字を表現できる。例: UTF-8。文字が
269                 使用するバイト数と表示幅の関係は複雑。
271 他のエンコーディングはVim内部のエンコーディングとして使用することはできない
272 が、そのようなエンコーディングのファイルを編集することはできる。'fileencoding'
273 を参照。
274 Note: すべてのエンコーディングは0から128までの文字がASCII文字と同じでなければ
275 ならない(EBCDIC用にコンパイルした場合は除く)。
277 'encoding'に設定できる値:                              *encoding-values*
278 1   latin1      8ビット文字 (ISO 8859-1)
279 1   iso-8859-n  ISO_8859 シリーズ (n = 2 to 15)
280 1   koi8-r      ロシア語
281 1   koi8-u      ウクライナ語
282 1   macroman    MacRoman (Macintoshのエンコーディング)
283 1   8bit-{name} 8ビットエンコーディングのどれか (Vim特有の名前)
284 1   cp437       iso-8859-1に類似
285 1   cp737       iso-8859-7に類似
286 1   cp775       バルト語
287 1   cp850       iso-8859-4に類似
288 1   cp852       iso-8859-1に類似
289 1   cp855       iso-8859-2に類似
290 1   cp857       iso-8859-5に類似
291 1   cp860       iso-8859-9に類似
292 1   cp861       iso-8859-1に類似
293 1   cp862       iso-8859-1に類似
294 1   cp863       iso-8859-8に類似
295 1   cp865       iso-8859-1に類似
296 1   cp866       iso-8859-5に類似
297 1   cp869       iso-8859-7に類似
298 1   cp874       タイ語
299 1   cp1250      チェコ語、ポーランド語など
300 1   cp1251      キリル語
301 1   cp1253      ギリシャ語
302 1   cp1254      トルコ語
303 1   cp1255      ヘブライ語
304 1   cp1256      アラビア語
305 1   cp1257      バルト語
306 1   cp1258      ベトナム語
307 1   cp{number}  MS-Windows: インストールされているシングルバイトのコードページ
308 2   cp932       日本語 (Windows only)
309 2   euc-jp      日本語 (Unix only)
310 2   sjis        日本語 (Unix only)
311 2   cp949       韓国語 (Unix and Windows)
312 2   euc-kr      韓国語 (Unix only)
313 2   cp936       簡体中国語 (Windows only)
314 2   euc-cn      簡体中国語 (Unix only)
315 2   cp950       繁体中国語 (on Unix alias for big5)
316 2   big5        繁体中国語 (on Windows alias for cp950)
317 2   euc-tw      繁体中国語 (Unix only)
318 2   2byte-{name} Unix: ダブルバイトエンコーディングのどれか (Vim特有の名前)
319 2   cp{number}  MS-Windows: インストールされているダブルバイトのコードページ
320 u   utf-8       UTF-8にエンコードされた32ビットのユニコード (ISO/IEC 10646-1)
321 u   ucs-2       UCS-2にエンコードされた16ビットのユニコード (ISO/IEC 10646-1)
322 u   ucs-2le     リトルエンディアンのucs-2
323 u   utf-16      ucs-2を拡張してさらに多くの文字を表現できるようにしたもの
324 u   utf-16le    リトルエンディアンのutf-16
325 u   ucs-4       UCS-4にエンコードされた32ビットのユニコード (ISO/IEC 10646-1)
326 u   ucs-4le     リトルエンディアンのucs-4
328 {name}にはシステムがサポートしているエンコーディングの名前を入れることができ
329 る。これらの名前はファイルのエンコーディングとロケールのエンコーディングを変換
330 するときにiconv()に渡される。MS-Windowsでは"cp{number}"はコードページ番号であ
331 る。
332 例: >
333                 :set encoding=8bit-cp1252
334                 :set encoding=2byte-cp932
336 いくつかの別名を使用できる。別名は上記の名前のどれかとして解釈される。
337 完全ではないが一覧を示す:
339 1   ansi        latin1と同じ (廃止。後方互換性のために残されている)
340 2   japan       日本語: Unixではeuc-jp、MS-Windowsではcp932
341 2   korea       韓国語: Unixではeuc-kr、MS-Windowsではcp949
342 2   prc         簡体中国語: Unixではeuc-cn、MS-Windowsではcp936
343 2   chinese     prcと同じ
344 2   taiwan      繁体中国語: Unixではeuc-tw、MS-Windowsではcp950
345 u   utf8        utf-8と同じ
346 u   unicode     ucs-2と同じ
347 u   ucs2be      ucs-2と同じ (ビッグエンディアン)
348 u   ucs-2be     ucs-2と同じ (ビッグエンディアン)
349 u   ucs-4be     ucs-4と同じ (ビッグエンディアン)
350     default     'encoding'のデフォルト値を意味する。環境に依存する。
352 UCSコードにはバイト順の問題がある。これは扱いが難しいので、可能なときにはいつ
353 でもUTF-8を使用した方が良い。指定がなければビッグエンディアンを使用する(最上位
354 バイトが最初にくる):
355             名前  バイト列    文字 ~
356             ucs-2             11 22         1122
357             ucs-2le           22 11         1122
358             ucs-4       11 22 33 44     11223344
359             ucs-4le     44 33 22 11     11223344
361 MS-WindowsはリトルエンディアンのUCS-2を使用するので、MS-Windowsでは主に
362 "ucs-2le"を使う。
364 良く似ているが区別されているエンコーディングがある。Vimはそれらを別のエンコー
365 ディングとして扱うため、エンコーディングの変換が行われる。エンコーディングの変
366 換ができないときや、よけいな変換を防ぎたいときは、他の名前を使う必要があるかも
367 しれない:
369         cp932, shift-jis, sjis
370         cp936, euc-cn
372                                                         *encoding-table*
373 通常、'encoding'はロケールと同じ設定で、'termencoding'は空になっている。その場
374 合、文字の入力と表示はそのロケールでエンコードされる。Vim内部でも同じ文字表現
375 を使う。
377 オプション'encoding'を設定して、Vim内部で使用するエンコーディングを変更するこ
378 とができるが、入力と表示にはロケールが使用されるので、エンコーディングの変換が
379 必要になる。そのときは'termencoding'がロケールのエンコーディングとして使用され
380 る。Vimは'encoding'と'termencoding'の間でエンコーディングを変換する。例: >
381         :let &termencoding = &encoding
382         :set encoding=utf-8
384 すべてのエンコーディングの組み合わせが利用できるわけではない。下記の表にどのよ
385 うなものが機能するか示す。すべての変換が可能なわけではなく、iconv()が常に使用
386 できるとは限らないので、利用できないものもある。これはシステムに依存することな
387 ので細部まで説明することはできない。
389 ('tenc'は'termencoding'の省略、'enc'は'encoding'の省略)
391 'tenc'      'enc'       説明 ~
393  8bit       8bit        機能する。'termencoding'と'encoding'が違うときは、変換
394                         することができないいくつかの文字は入力と表示が正しく行
395                         われない。(そのような文字を得るには'encoding'を'utf-8'
396                         に設定する)
397  8bit      2byte        MS-Windows: インストールされているすべてのコードページ
398                         で機能する。8ビットの文字だけ入力することができる。
399                         他のシステム: 機能しない。
400  8bit      Unicode      機能するが、8ビット文字しか直接入力できない(他の文字は
401                         DIGRAPH、キーマップなどで入力できる)。端末には8ビット
402                         文字しか表示できない。GUIでは'guifont'がサポートしてい
403                         る文字であれば表示できる。
405  2byte      8bit        機能するが、非ASCII文字を入力するには問題がある。
406  2byte     2byte        MS-Windows: インストールされているすべてのコードページ
407                         で機能する。'encoding'をロケールと違う設定にすると入力
408                         に問題あり。
409                         他のシステム: 'termencoding'と'encoding'が同じ場合のみ
410                         機能する。'termencoding'は空にしておいたほうが良い。
411  2byte     Unicode      機能する。Vimは入力された文字を変換する。
413  Unicode    8bit        機能する。(普通はこうしない)
414  Unicode    2byte       機能しない。
415  Unicode   Unicode      問題なく機能する。(Vim内部ではユニコードはすべてUTF-8
416                         で扱われるため、'termencoding'が空でも同じく機能する)
418 エンコーディングの変換                                     *charset-conversion*
420 Vimはいろいろな場面で自動的にエンコーディングを変換する:
421 - ファイルを読み込むとき、'fileencoding'と'encoding'が違う場合
422 - ファイルを書き込むとき、'fileencoding'と'encoding'が違う場合
423 - 文字を表示するとき、'termencoding'と'encoding'が違う場合
424 - 入力を受け取るとき、'termencoding'と'encoding'が違う場合
425 - メッセージを表示するとき、LC_MESSAGESのエンコーディングが'encoding'と違う場
426   合(gettextのサポートが必要)。
427 - Vimスクリプトを読み込むとき、|:scriptencoding|が'encoding'と違う場合
428 - |viminfo|ファイルを読み書きするとき
429 ほとんどの変換は|+iconv|の機能が必要である。ファイルを読み書きするときの変換の
430 動作はオプション'charconvert'での指定もできる。
432 エンコーディングを変換するための便利なユーティリティ:
433     All:            iconv
434         GNU iconvはほぼすべてのエンコーディングを変換できる。変換の中間層にユ
435         ニコードを使用することで、多くの変換を可能にしている。
436         http://www.gnu.org/directory/libiconv.html を参照。
438     日本語:            nkf
439         "Network Kanji code conversion Filter"。最も特徴的なnkfの機能は漢字
440         コードの自動認識である。そのため、ファイルのエンコーディング|charset|
441         を知る必要がない。ISO-2022-JPやShift_JISをEUC-JPに変換するには、Vimか
442         らこのようなコマンドを単に実行すれば良い:
443             :%!nkf -e
444         Nkfはここから入手できる:
445         http://www.sfc.wide.ad.jp/~max/FreeBSD/ports/distfiles/nkf-1.62.tar.gz
446 訳注: utf-8対応などの機能が追加されているもの
447 訳注: http://sourceforge.jp/projects/nkf/
449     中国語:            hc
450         "Hanzi Converter"。HcはGBからBig5へ、Big5からGBへ、の変換をする。Hcは
451         ここから入手できる:
452         ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz
454     韓国語:            hmconv
455         HmconvはE-mailを扱うことに特化した韓国語エンコーディング変換ユーティリ
456         ティである。EUC-KRとISO-2022-KRの間の変換ができる。Hmconvはここから入
457         手できる:
458         ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/
460     多国語:            lv
461         Lvは高性能な多言語ファイルビューアである。そして、エンコーディングの変
462         換もできる。サポートしているエンコーディング|charset|は:ISO-2022-CN、
463         ISO-2022-JP、ISO-2022-KR、EUC-CN、EUC-JP、EUC-KR、EUC-TW、UTF-7、
464         UTF-8、ISO-8859シリーズ、Shift_JIS、Big5、HZ。Lvはここから入手できる:
465         http://www.ff.iij4u.or.jp/~nrt/freeware/lv4495.tar.gz
468                                                         *mbyte-conversion*
469 'encoding'の設定と違うエンコーディングのファイルを読み書きするときは、エンコー
470 ディングを変換する必要がある。次の変換がサポートされている:
471 - Latin-1(ISO-8859-1)、UTF-8、UCS-2、UCS-4の間の変換はVimが自前で行なう。
472 - MS-Windowsでは、'encoding'がユニコードなら各コードページとの変換は機能する。
473 - 'charconvert'による変換。
474 - 可能であれば、iconvライブラリを使用して変換することができる。
475         古いバージョンのGNU iconv()では変換が失敗することがある(Vimが用意する
476         バッファよりも、はるかに大きなバッファを要求するため)。
477         その場合は他のiconv()実装を試してください。
479                                                         *iconv-dynamic*
480 MS-Windowsでは|+iconv/dyn|機能つきでVimをコンパイルすることができる。そうする
481 とVimは"iconv.dll"と"libiconv.dll"を検索するようになる。どちらも見つからない場
482 合でもVimは動作するが、変換ができなくなる。
484 ==============================================================================
485 4. 端末の使用 (Using a terminal)                     *mbyte-terminal*
487 GUIではマルチバイト文字を完全にサポートしている。端末を使う場合でも、Vimが使用
488 するエンコーディングをサポートしていればマルチバイト文字を扱えるが、少し不便な
489 こともある。
491 マルチバイト(と|XIM|)をサポートしているxtermでVimを使用することができる。他に
492 もkterm(Kanji term)、hanterm(韓国語用)、Eterm(Enlightened terminal)、rxvt、な
493 どが使用できる。
495 端末が適切なエンコーディングをサポートしていない場合はオプション'termencoding'
496 を設定する。Vimは入力された文字を'termencoding'から'encoding'へと変換する。そ
497 して表示するときに'encoding'から'termencoding'へと変換する。端末のエンコーディ
498 ングに、Vimが取り扱う文字がすべて含まれていない場合、文字の情報が失なわれてし
499 まう。下記で説明しているxtermのように、ユニコードをサポートしている端末なら問
500 題はない。ほぼすべての文字セットは情報を失なわずにユニコードに変換できるからで
501 ある。
504 UTF-8をXFree86 xtermで使う                          *UTF8-xterm*
506 訳注: 最近の環境なら標準で使えるようになってます。
508 これは Thomas Dickey によって提供される XFree86 xterm で、どのようにしてUTF-8
509 エンコードされた文字を利用するかについての簡単な説明です(文: Markus Kuhn)。
511 UTF-8 をサポートしている最新の xterm を入手してください:
513         http://invisible-island.net/xterm/xterm.html
515 "./configure --enable-wide-chars ; make" としてコンパイルしてください。
517 また ISO 10646-1 バージョンのフォントを入手してください:
519         http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz
521 それから README ファイルの記述に従ってフォントをインストールしてください。
523 そして xterm を起動します。 >
525   xterm -u8 -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
526 大きな文字を使うときは: >
527   xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
529 そうするとUTF-8端末エミュレータが動作するでしょう。
530 ucs-fonts.tar.gz に含まれている次の両方のデモ・ファイルを試して: >
532    cat utf-8-demo.txt
533    vim utf-8-demo.txt
535 xtermでUTF-8が問題なく動作しているかどうか確認してください。
537 Vimの'encoding'を'utf-8'に設定する必要があります。
539 ==============================================================================
540 5.  X11のフォント (Fonts on X11)                     *mbyte-fonts-X11*
542 X11でのフォントの取り扱いは難しい。シングルバイトフォントの名前は長い文字列で
543 ある。マルチバイトフォントを使うにはさらにいくつか考慮することがある。
545 Note: この説明のほとんどはGTK+ 2にとっては関係ない。XLFDを用いたフォントの指定
546 はもうサポートされていない。フォントの設定例は'guifont'を参照。下記の項|XLFD|
547 と|xfontset|は読んでも読まなくても良い。
549 Vimは固定幅のフォントだけを扱うことができる。プロポーショナルフォントを使用す
550 ることはできない。そのため多くの(見た目の良い)フォントは使用できない。しかし、
551 メニューやツールチップにはどのフォントでも使用することができる。
553 Note: 表示と入力は独立している。入力したい言語のインプットメソッドがなくても、
554 表示することはできる。
556 メニューやツールチップは標準設定のフォントでも機能するが、おそらくそれは、あま
557 り見た目が良くない。より良いフォントを選ぶには下記の説明を参照。
560 X論理フォント名 (X LOGICAL FONT DESCRIPTION (XLFD))
561                                                         *XLFD*
562 XLFDはXのフォント名であり、フォントサイズや文字セットなどの情報を含んでいる。
563 名前はこのような書式になっている:
565 FOUNDRY-FAMILY-WEIGHT-SLANT-WIDTH-STYLE-PIXEL-POINT-X-Y-SPACE-AVE-CR-CE
567 各フィールドの意味:
569 - FOUNDRY:  FOUNDRY フィールド。フォントを作成、提供した組織名。
570 - FAMILY:   FAMILY_NAME フィールド。フォントファミリーの名前(書体名)
571             (helvetica、gothic、times、など)
572 - WEIGHT:   WEIGHT_NAME フィールド。文字の太さ。(light、medium、bold、など)
573 - SLANT:    SLANT フィールド (文字の傾き)
574                 r:  Roman (ローマン体。正字体。傾きなし)
575                 i:  Italic (イタリック体)
576                 o:  Oblique (斜体)
577                 ri: Reverse Italic (逆傾きのイタリック体)
578                 ro: Reverse Oblique (逆傾きの斜体)
579                 ot: Other (その他)
580                 number: Scaled font (傾きの角度)
581 - WIDTH:    SETWIDTH_NAME フィールド。文字幅。
582             (normal、condensed、narrow、double wide)
583 - STYLE:    ADD_STYLE_NAME フィールド。フォントの追加情報。
584             (Serif、Sans Serif、Informal、Decorated、など)
585 - PIXEL:    PIXEL_SIZE フィールド。ピクセル単位の文字の高さ。
586 - POINT:    POINT_SIZE フィールド。ポイント単位の文字の高さを10倍した値。
587 - X:        RESOLUTION_X フィールド。X軸方向の解像度(1インチあたりのドット数)
588 - Y:        RESOLUTION_Y フィールド。Y軸方向の解像度(1インチあたりのドット数)
589 - SPACE:    SPACING フィールド。 (文字送り)
590                 p:  Proportional (プロポーショナル、可変幅)
591                 m:  Monospaced   (モノスペース、固定幅)
592                 c:  CharCell     (文字セル)
593 - AVE:      AVERAGE_WIDTH フィールド。ピクセル単位の文字幅の平均値を10倍した値。
594 - CR:       CHARSET_REGISTRY フィールド。文字セットの名前。
595 - CE:       CHARSET_ENCODING フィールド。文字セットの追加情報。JIS X 0208のよ
596             うな文字セットは、このフィールドが0ならコードポイントはGLと同じ値
597             を持つ。1ならGRと同じ。
598 訳注: jisx0208の場合、CHARSET_ENCODING=0なら7ビットJISコード、1ならEUC-JP、の
599 訳注: 番号で、文字がフォントに収録されている。
601 例えば、JIS X 0208に対応する16ドットのフォントは次のように書く:
602     -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0
603 訳注: For example, in case of a 14 dots font corresponding to JIS X 0208, it is
604 訳注: written like:
605 訳注:     -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0
606 訳注: 16 dots の typo?
609 X フォントセット (X FONTSET)
610                                                 *fontset* *xfontset*
611 シングルバイト文字セットは一般的に一つのフォントに関連付けられている。マルチバ
612 イト文字セットはほとんどの場合、複数のフォントの組合せを使用する。そして表示す
613 る文字に合ったフォントが選択されて使用される。そのようなフォントの集合をフォン
614 トセットと呼ぶ。
616 ロケールによって必要なフォントは異なる。X-Windowはロケールに必要な文字セットの
617 表を管理している。ロケールが必要とする全てのフォントをオプション'guifontset'に
618 設定しなければならない。
620 NOTE: 'encoding'が、ロケールとは違う文字セットに設定されていても、フォントセッ
621 トは常にロケールを使用する。そういう場合は'guifontset'ではなく'guifont'と
622 'guifontwide'を使用する。
624 例:
625     |charset| language              "groups of characters" ~
626     GB2312    簡体中国語         ISO-8859-1 and GB 2312
627     Big5      繁体中国語         ISO-8859-1 and Big5
628     CNS-11643 繁体中国語         ISO-8859-1, CNS 11643-1 and CNS 11643-2
629     EUC-JP    日本語                   JIS X 0201 and JIS X 0208
630     EUC-KR    韓国語                   ISO-8859-1 and KS C 5601 (KS X 1001)
632 xlsfontsコマンドを使ってフォントを検索できる。例えば、KS C 5601のフォントを探
633 すには: >
634     xlsfonts | grep ksc5601
636 これは複雑で混乱しやすいことなので、分らないことはX-Windowのドキュメントで調べ
637 てください。
639                                                 *base_font_name_list*
640 使用したいフォントの名前を見付けたらオプション'guifontset'を設定する。設定は
641 フォントの名前をコンマで区切って指定する。
643 例えば、ja_JP.eucJPロケールの場合、JIS X 0201とJIS X 0208が必要である。次のよ
644 うに文字セットを明示的に指定してフォントを設定する: >
646  :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0,
647         \-misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0
649 文字セットの名前を省略した場合、X-Windowが、ロケールに必要なフォントを選択す
650 る。例: >
652  :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140,
653         \-misc-fixed-medium-r-normal--14-130-75-75-c-70
655 基本となるフォントの名前を一つだけ指定して、利用可能なすべてのフォントの中から
656 選択させることもできる。例: >
658  :set guifontset=-misc-fixed-medium-r-normal--14-*
660 フォントの別名を指定することもできる。フォントディレクトリ(例えば
661 /usr/X11R6/lib/X11/fonts/)のファイルfonts.aliasを見てください。例: >
663  :set guifontset=k14,r14
665                                                         *E253*
666 Note 東アジアのフォントは、基本的には正四角形の範囲で表示される。ラテンフォン
667 トと東アジアのフォントを組み合わせた場合、東アジアのフォントはラテンフォントの
668 2倍の幅で表示される。
670 'guifontset'が空の場合、コマンド|:highlight|の"font"引数はフォントセットとして
671 解釈される。例えばこのように使用する: >
672         :hi Comment font=english_font,your_font
673 間違った"font"引数を使用するとエラーメッセージが表示される。事前に'guifontset'
674 を設定して確認してください。
677 リソースファイルを使う (USING RESOURCE FILES)
679 'guifontset'を設定する代りにX11のリソースを設定すれば、Vimはそれを使用する。
680 これはXのリソースファイルの働きを知っている人向けです。
682 MotifとAthenaではファイル$HOME/.Xdefaultsにこの3行を追加する:
684         Vim.font: |base_font_name_list|
685         Vim*fontSet: |base_font_name_list|
686         Vim*fontList: your_language_font
688 Note: Vim.font はテキストエリアの設定
689       Vim*fontSet はメニューの設定
690       Vim*fontList はメニューの設定(Motif GUI用)
692 例えば、14ドットの日本語フォントを使うには: >
694         Vim.font: -misc-fixed-medium-r-normal--14-*
695         Vim*fontSet: -misc-fixed-medium-r-normal--14-*
696         Vim*fontList: -misc-fixed-medium-r-normal--14-*
698 もしくは: >
700         Vim*font: k14,r14
701         Vim*fontSet: k14,r14
702         Vim*fontList: k14,r14
704 この設定をすぐに反映させるには >
706         xrdb -merge ~/.Xdefaults
708 もしくはXサーバを停止して再起動する。
711 GTK+版のVimは.Xdefaultsを使わず~/.gtkrcの設定を使用する。初期設定は恐らくうま
712 く機能するが、メニューのフォントは変更した方がいいかもしれない。例: >
714         style "default"
715         {
716                 fontset="-*-*-medium-r-normal--14-*-*-*-c-*-*-*"
717         }
718         widget_class "*" style "default"
720 ==============================================================================
721 6.  MS-Windowsのフォント (Fonts on MS-Windows)       *mbyte-fonts-MSwin*
723 最も簡単なのは、フォント選択ダイアロクを使ってフォントを選択して、試してみるこ
724 とである。メニューの"Edit/Select Font..."(編集/フォント設定)を使用する。ちょう
725 どいいフォントを見付けたら、このコマンドでフォントの名前を確認する: >
727         :set guifont
729 そして、'guifont'を設定するコマンドを|gvimrc|に追加する: >
731         :set guifont=courier_new:h12
733 ==============================================================================
734 7.  X11での入力 (Input on X11)                      *mbyte-XIM*
736 X INPUT METHOD (XIM) の基礎知識                      *XIM* *xim* *x-input-method*
738 XIMはXの国際化入力機構です。Xlibユニット型と|IM-server| (Input-Method server)
739 型の2種類があります。|IM-server|型はCJK(日中韓)で使われるような複雑な入力方式
740 に適しています。
742 - インプットメソッドサーバ (IM-server)
743                                                         *IM-server*
744   |IM-server|型の入力方式では、FrontEndシステムかBackEndシステムのどちらかの方
745   法で入力イベントを処理する。FrontEndシステムでは、まず|IM-server|が入力イベ
746   ントを取得し、そして入力の結果を|IM-server|からアプリケーションへ渡す。
747   BackEndシステムではその逆の順番で処理される。MS WindowsはBackEndシステムを採
748   用している。Xでは、ほとんどの|IM-server|がFrontEndシステムを採用している。
749   BackEndシステムには通信のオーバーヘッドが大きく掛かるというデメリットはある
750   が、アプリケーションに制限を加えず、安全に同期することができる。
752   たとえばxwnmoとkinput2という日本語インプットメソッドサーバがあるが、両方とも
753   FrontEndシステムである。xwnmoはWnn(下記参照)と一緒に提供されている。kinput2
754   はここから入手できる: ftp://ftp.sra.co.jp/pub/x11/kinput2/
756   中国語用には、"xcin"というよくできたXIMサーバがあり、簡体中国語と繁体中国語
757   の両方を入力できる。適切な入力テーブルを作成すれば、他のロケールも受け付け
758   る。Xcinはここから入手できる: http://xcin.linux.org.tw/
759   他にはscim: http://scim.freedesktop.org/ と fcitx:
760   http://www.fcitx.org/ がある。
762 - 変換サーバ (Conversion Server)
763                                                         *conversion-server*
764   いくつかのシステムではさらに、変換サーバが必要である。ほとんどの日本語イン
765   プットメソッドサーバは仮名漢字変換サーバを必要とする。中国語の入力では、入力
766   方式に依存する。いくつかの方式では、PinYinやZhuYinからHanZiへの変換サーバが
767   必要である。韓国語の入力では、Hanjaを入力するには、Hangul-Hanja変換サーバが
768   必要である。
770   例えば、日本語の入力は2段階に分けられる。最初に平仮名を入力し、次に漢字へ変
771   換する。多くの漢字(JIS X 0208には6349文字が定義されている)と76文字の平仮名が
772   あるため、まず平仮名を入力し、必要なら、それを漢字や片仮名に変換する。仮名漢
773   字変換サーバにはjserver(Wnnと一緒に提供されている。下記参照)やcannaなどがあ
774   る。Cannaはここから入手できる:
775   ftp://ftp.nec.co.jp/pub/Canna/ (もう機能していない)
776 訳注: Cannaのサイト http://www.nec.co.jp/canna/
778 Wnn4.2というよくできた入力システムがある。Wnn4.2は以下のものを含んでいる。
779     xwnmo (|IM-server|)
780     jserver (日本語仮名漢字変換サーバ)
781     cserver (中国語のPinYin、ZhuYinから簡体漢字への変換サーバ)
782     tserver (中国語のPinYin、ZhuYinから繁体漢字への変換サーバ)
783     kserver (Hangul-Hanja変換サーバ)
784 Wnn4.2は多くのシステムで動作し、インターネットのさまざまな場所で入手することが
785 できる。あなたのシステム用のRPMやportを使用してください。
788 - 入力スタイル (Input Style)
789                                                         *xim-input-style*
790   CJK(日中韓語)を入力するとき、4つの表示領域がある:
791       1. 入力途中の文字を表示する領域
792       2. 現在の入力モードを表示する領域
793       3. 変換候補を表示する領域
794       4. その他のツールを表示する領域
796   3番目の表示領域は変換をするときに必要である。たとえば、日本語の入力では、同
797   じ発音の漢字が複数あるので、同じ平仮名が複数の漢字に対応する。
799   1番目と2番目の表示領域はXの国際化入力でそれぞれ"Preedit Area"、"Status Area"
800   と定義されている。3番目と4番目の表示領域は定義されておらず、|IM-server|に任
801   されている。国際化入力ではPreedit AreaとStatus Areaの組み合せで4つの入力スタ
802   イルが定義されている: |OnTheSpot| |OffTheSpot| |OverTheSpot| |Root|。
804   現在、GUI Vimは|OverTheSpot|、|OffTheSpot|、|Root|の3つのスタイルをサポート
805   している。
807 *.  on-the-spot                                         *OnTheSpot*
808     Preedit AreaとStatus Areaはアプリケーション領域にクライアントアプリケー
809     ションによって表示される。クライアントアプリケーションはテキストを挿入する
810     位置に未確定文字をすべて表示するように|IM-server|から指示される。クライア
811     ントは、コールバック関数を登録して、未確定文字の入力中にインプットメソッド
812     から呼び出してもらう。
813 *.  over-the-spot                                       *OverTheSpot*
814     Status Areaはアプリケション領域の固定位置に作成される。Vimの場合は、ステー
815     タスライン付近である。Preedit Areaはアプリケーションの入力している位置に作
816     成される。インプットメソッドは、テキストが挿入される位置にあるウインドウに
817     未確定文字を表示する。
818 *.  off-the-spot                                        *OffTheSpot*
819     Preedit AreaとStatus Areaはアプリケーション領域に表示される。Vimの場合は、
820     ステータスライン付近である。クライアントアプリケーションは表示ウインドウを
821     提供し、インプットメソッドが直接そこに未確定文字を表示する。
822 *.  root-window                                         *Root*
823     Preedit AreaとStatus Areaはアプリケーションの外側に表示される。インプット
824     メソッドは別に用意した自分のウインドウに未確定文字をすべて表示する。
827 XIMを使用する (USING XIM)    *multibyte-input* *E284* *E286* *E287* *E288*
828                                 *E285* *E291* *E292* *E290* *E289*
830 Note 表示と入力は独立している。インプットメソッドがなくてもあなたの言語を見る
831 ことができる。しかし、表示方法とインプットメソッドが合わないと、テキストは間
832 違って表示される。
834         Note: 'guifontset'を設定しないとインプットメソッドを使用できない。従っ
835         て、ラテン語のユーザも、インプットメソッドを使用するなら、'guifontset'
836         を設定しなければならない。
838 あなたの言語を入力するには、その言語をサポートしているインプットメッソッドサー
839 バ|IM-server|を実行する。必要なら変換サーバ|conversion-server|も実行する。
841 次の3行を~/.Xdefaultsファイルに書き込む。これは|XIM|を使用するすべてのXアプリ
842 ケーションに共通する設定である。すでに|XIM|を使用している場合は、これを読み飛
843 ばしてください。 >
845         *international: True
846         *.inputMethod: your_input_server_name
847         *.preeditType: your_input_style
849 input_server_name       インプットサーバ|IM-server|の名前。(|IM-server|のマ
850                         ニュアルを確認してください)。
851 your_input_style        |OverTheSpot|、|OffTheSpot|、|Root|のどれか。
852                         |xim-input-style|を参照。
854 X11R6を使用している場合、*internationalは必要ない。
855 また、*.inputMethodと*.preeditTypeの指定は任意。
857 kinput2を|IM-server|として使う場合の例: >
859         *international: True
860         *.inputMethod: kinput2
861         *.preeditType: OverTheSpot
863 |OverTheSpot|を使用する場合、GUI Vimはノーマルモードでも常にインプットメソッド
864 サーバに接続する。そのため"f"や"r"コマンドであなたの言語を入力することができ
865 る。しかし、他の入力スタイルの場合は、GUI Vimはノーマルモードのときにはイン
866 プットメソドサーバに接続しない。
868 インプットメソッドサーバが|OverTheSpot|をサポートしていない場合、"f"や"r"など
869 のノーマルモードコマンドであなたの言語を使用するには、ローカライズされたxterm
870 か、|XIM|をサポートしたxtermを使用する。
872 必要なら、環境変数XMODIFIERSを設定する:
874         sh:  export XMODIFIERS="@im=input_server_name"
875         csh: setenv XMODIFIERS "@im=input_server_name"
877 インプットメソッドサーバにkinput2を使用する場合のshでの設定例: >
879         export XMODIFIERS="@im=kinput2"
882 XIMの制御 (FULLY CONTROLLED XIM)
884 MS-WindowsのIME(|multibyte-ime|参照)のように、XIMを制御することができる。
885 この機能は現在GTK GUIでのみ利用可能。
887 XIMを制御するには、使用しているインプットメソッドのトグルキーを、オプション
888 'imactivatekey'に設定する必要がある。たとえば、インプットメソッドサーバに
889 kinput2 + cannaの組み合せを使用している場合、トグルキーは恐らくShift+Spaceなの
890 で、このように設定する: >
892         :set imactivatekey=S-space
894 設定の書式は'imactivatekey'を参照。
896 ==============================================================================
897 8.  MS-Windowsでの入力 (Input on MS-Windows)                *mbyte-IME*
899 (Windows IME support)                           *multibyte-ime* *IME*
901 {WindowsのGUI環境で|+multi_byte_ime|が有効な場合のみ利用可能}
903 Windowsでマルチバイト文字を入力するには、Input Method Editor(IME)を使用する。
904 IMEを使ったテキストの入力では、IMEの状態をオンにしたりオフにしたり、何度も何度
905 も切り替えなければならない。そうしないと、IMEの状態がオンのときには、キー入力
906 はすべてIMEに取られてしまうので、'j'や'k'などほぼすべてのキーを、直接Vimに入力
907 することができない。
909 |+multi_byte_ime|機能はそれを手助けし、IMEを手動で切り替える手間を減少させる。
910 マルチバイトテキストを編集しているときでも、ノーマルモードでIMEを必要とするこ
911 とはほとんどない。そこで、ESCで挿入モードを抜けるときに、VimはIMEの状態を記録
912 してから、IMEを強制的にオフにする。そして、次に挿入モードに入ったときに自動的
913 に、記録しておいた状態に戻す。
915 これは挿入モードとノーマルモードの間だけでなく、コマンドラインや検索コマンドの
916 入力時や置換モードでも同じです。
917 オプション'iminsert'、'imsearch'、'imcmdline'を設定して、それぞれ別々に入力方
918 法を選択したり、無効にしたりできる。
920 IMEについて (WHAT IS IME)
921     IMEは東アジア向けのWindowsの一部で、マルチバイト文字を入力するためのもので
922     す。 英語などの言語用のWindowsにはIMEは搭載されていない(普通は必要ない)。
923     しかし、Microsoft Global IMEというものがある。これはInternet Explorer4.0以
924     上に含まれている。詳しいことは下記のURLを参照。
926 GLOBAL IMEについて (WHAT IS GLOBAL IME)                     *global-ime*
927     Global IMEはWindows 95、Windows 98、Windows NT 4.0のどの言語用のバージョン
928     でも利用可能で、中国語、日本語、韓国語のテキストをVimに入力することができ
929     る。
930     Windows 2000やXpでも問題なく使用できる(ダウンロードは必要ない)。
931     Windows 2000 ProfessionalにはGlobal IMEが組み込まれており、コントロールパ
932     ネルの地域と言語のオプション/言語タブ/テキストサービスと入力言語の詳細ボタ
933     ンから入力言語を追加できる。
934     Global IMEの詳細は下記のURLを参照。リンク先にはGlobal IMEの各国語用のバー
935     ジョンもある。
937     - Global IME detailed information.
938         http://www.microsoft.com/windows/ie/features/ime.asp
940     - Active Input Method Manager (Global IME)
941         http://msdn.microsoft.com/workshop/misc/AIMM/aimm.asp
943     Global IMEのサポートは実験的な機能です。
945 NOTE: IMEを使用するには入力したい言語をシステムに追加する必要がある。正確な設
946 定方法はWindowsのバージョンによって違う。Windows XPの場合は:
947 1. コントロールパネル
948 2. 地域と言語のオプション
949 3. 言語タブ
950 4. [テキストサービスと入力言語]エリアの詳細ボタン
951 5. 追加ボタン
952 訳注: 原文 Windows 2000 Professionalの場合
953 訳注: 1. Control Panel
954 訳注: 2. Regional Options
955 訳注: 3. Input Locales Tab
956 訳注: 4. Add Installed input locales -> Chinese(PRC)
957 訳注:    The default is still English (United Stated)
960 IMEやXIMがオンのときのカーソルの色                            *CursorIM*
961     IMEの状態に応じてカーソルの色を変えることができる。通常、IMEの状態はデスク
962     トップの隅(やタスクバー)に表示されているが、これはあまり確認しやすくないの
963     で、この機能が役に立つ。
964     これはXIMでも同じように機能する。
966     強調グループのCursorIMを設定して、IMEの状態がオンのときの色を選べる。
967     たとえば、次の行を|gvimrc|に追加する: >
969         if has('multi_byte_ime')
970             highlight Cursor guifg=NONE guibg=Green
971             highlight CursorIM guifg=NONE guibg=Purple
972         endif
974     これで、IMEがオフならカーソルは緑、オンなら紫になる。
976 ==============================================================================
977 9. キーマップでの入力 (Input with a keymap)              *mbyte-keymap*
979 キーボードから入力できない文字がある場合にはオプション'keymap'を使う。一つ以上
980 の(英語の)文字を入力することで、別の(非英語の)文字を入力することができる。この
981 機能はテキストを入力するときだけ作用する。Vimコマンドを入力するときには作用し
982 ない。そのため、キーボードの設定を切り替える手間がない。
984 オプション'keymap'に、使用したいキーマップファイルを指定する。ファイルの名前は
985 次の二つのうちのどちらか:
987         keymap/{keymap}_{encoding}.vim
988         keymap/{keymap}.vim
990 {keymap}はオプション'keymap'に設定する値、{encoding}はオプション'encoding'の
991 値。{encoding}付きのファイル名が優先して使われる。
993 キーマップファイルを探すために'runtimepath'が使われる。利用可能なすべてのキー
994 マップファイルを一覧するには、このようにする: >
995         :echo globpath(&rtp, "keymap/*.vim")
997 挿入モードとコマンドラインモードでは、CTRL-^を使ってキーマップを使用するかどう
998 かを切り換えることができる。|i_CTRL-^| |c_CTRL-^|
999 挿入モードでは、キーマップの状態はオプション'iminsert'に記憶される。挿入モード
1000 から抜けて、ふたたび挿入モードに入ったときに、以前の状態が使われる。|f|や|r|な
1001 どの一つの文字を引数に取るコマンドでも同じ値が使われる。
1002 コマンドラインモードでは、キーマップの状態は記憶されない。コマンドラインモー
1003 ドに入るとまず、(ASCII文字の)Exコマンドを入力するはずだからである。
1004 検索パターンの入力では、オプション'imsearch'が使われる。'iminsert'と設定を共有
1005 するように設定することもできる。
1007 キーマップ(言語マップ)を使用中に、GUIカーソルの色を変えることができる。もし
1008 も、非標準な背景色を使用していた場合にカーソルが見えなくなることがないように、
1009 初期状態ではこの機能は無効になっている。次の例では、カーソルの色が明るくなるよ
1010 うにしている: >
1011         :highlight Cursor guifg=NONE guibg=Green
1012         :highlight lCursor guifg=NONE guibg=Cyan
1014                 *keymap-file-format* *:loadk* *:loadkeymap* *E105* *E791*
1015 キーマップファイルはこのような構成になっている: >
1017         " Maintainer:   name <email@address>
1018         " Last Changed: 2001 Jan 1
1020         let b:keymap_name = "short"
1022         loadkeymap
1023         a       A
1024         b       B       comment
1026 「"」で始まる行はコメントなので無視される。空白行も無視される。マップを定義す
1027 る行には、参考にできるようなコメントを書くことができる。
1028 訳注: The lines starting with a " are comments and will be ignored.  Blank lines are
1029 訳注: also ignored.  The lines with the mappings may have a comment after the useful
1030 訳注: text.
1031 訳注: 自信無し
1033 "b:keymap_name"にはステータスラインに表示される短い名前を設定できる。'keymap'
1034 の値は、言語の違いやキーボードやエンコーディングの違いを区別するために長くなり
1035 がちだが、ステータスラインに表示できる文字には限りがあるので、この変数を使う。
1037 実際のマップは"loadkeymap"以下に書く。上の例では、"a"は"A"に、"b"は"B"にマップ
1038 される。このように、一番目のものが二番目にマップされる。そして、ファイルの末尾
1039 まで同じように処理される。
1040 このように設定したマップは、|:lnoremap|に"<buffer>"を指定したバッファローカル
1041 なマップとまったく同じである。
1042 それはこのコマンドで確認できる: >
1043         :lmap
1044 二つの項目は空白で区切る。マップに空白を含めるには、"<Tab>"、"<Space>"という特
1045 別な表記を使う。二つの項目の文字の長さは、合わせて200バイトを超えてはいけな
1046 い。
1048 一番目の項目に複数の文字を指定することができる。これはデッドキーのような作用を
1049 する。例: >
1050         'a      ??
1051 クォートの入力があったとき、次に"a"が入力されるかどうかわからないので、Vimは次
1052 の文字が入力されるまで待機する。シングルクォートを入力できるようにするには、次
1053 の行も加える: >
1054         ''      '
1055 マップは|:lnoremap|で定義されるので、結果のクォート文字は、他のマップの開始文
1056 字としては扱われない。
1057 訳注: > シングルクォートを入力できるようにするには...
1058 訳注: 'timeout'も参照。
1059 "accents"キーマップはこれを使用する。                         *keymap-accents*
1061 二番目の項目に複数の文字を指定することもできるが、一般的ではない。しか
1062 し、文字を指定するのにいろいろな方法を使用して構わない: >
1063         A       a               literal character
1064         A       <char-97>       decimal value
1065         A       <char-0x61>     hexadecimal value
1066         A       <char-0141>     octal value
1067         x       <Space>         special key name
1069 文字は現在の'encoding'と同じエンコーディングであるものとして扱われる。
1070 ":scriptencoding"でリテラル文字のエンコーディングを指定することができるが、
1071 <char->表記の文字には影響しない。なぜなら、キーマップファイルのエンコーディン
1072 グが変換されるのであって、<char->の結果の文字は変換されないからである。
1074 "loadkeymap"以下の行は'cpoptions'に"C"を設定した状態で解釈される。つまり、行の
1075 継続は使用されない。バックスラッシュは特殊文字として扱われる。例: >
1077         " a comment line
1078         \"      x       " を x へマップ
1079         \\      y       \ を y へマップ
1081 他の人にも便利なキーマップファイルを作成したら、Vimの配布物に含めるために、Vim
1082 のメンテナに提出することを検討してみて下さい:
1083 <maintainer@vim.org>
1086 ヘブライ語 キーマップ (HEBREW KEYMAP)                     *keymap-hebrew*
1088 このファイルはUTF-8とCP1255のエンコーディングで利用可能な文字と、その文字を入
1089 力するためのキーマップを説明している:
1091 glyph   encoding           keymap ~
1092 Char   utf-8 cp1255  hebrew  hebrewp  name ~
1093 ??    0x5d0  0xe0     t       a     'alef
1094 ??    0x5d1  0xe1     c       b     bet
1095 ??    0x5d2  0xe2     d       g     gimel
1096 ??    0x5d3  0xe3     s       d     dalet
1097 ??    0x5d4  0xe4     v       h     he
1098 ??    0x5d5  0xe5     u       v     vav
1099 ??    0x5d6  0xe6     z       z     zayin
1100 ??    0x5d7  0xe7     j       j     het
1101 ??    0x5d8  0xe8     y       T     tet
1102 ??    0x5d9  0xe9     h       y     yod
1103 ??    0x5da  0xea     l       K     kaf sofit
1104 ??    0x5db  0xeb     f       k     kaf
1105 ??    0x5dc  0xec     k       l     lamed
1106 ??    0x5dd  0xed     o       M     mem sofit
1107 ??    0x5de  0xee     n       m     mem
1108 ??    0x5df  0xef     i       N     nun sofit
1109 ??    0x5e0  0xf0     b       n     nun
1110 ??    0x5e1  0xf1     x       s     samech
1111 ??    0x5e2  0xf2     g       u     `ayin
1112 ??    0x5e3  0xf3     ;       P     pe sofit
1113 ??    0x5e4  0xf4     p       p     pe
1114 ??    0x5e5  0xf5     .       X     tsadi sofit
1115 ??    0x5e6  0xf6     m       x     tsadi
1116 ??    0x5e7  0xf7     e       q     qof
1117 ??    0x5e8  0xf8     r       r     resh
1118 ??    0x5e9  0xf9     a       w     shin
1119 ??    0x5ea  0xfa     ,       t     tav
1121 Vowel marks and special punctuation:
1122 ????    0x5b0  0xc0     A:      A:   sheva
1123 ????    0x5b1  0xc1     HE      HE   hataf segol
1124 ????    0x5b2  0xc2     HA      HA   hataf patah
1125 ????    0x5b3  0xc3     HO      HO   hataf qamats
1126 ????    0x5b4  0xc4     I       I    hiriq
1127 ????    0x5b5  0xc5     AY      AY   tsere
1128 ????    0x5b6  0xc6     E       E    segol
1129 ????    0x5b7  0xc7     AA      AA   patah
1130 ????    0x5b8  0xc8     AO      AO   qamats
1131 ????    0x5b9  0xc9     O       O    holam
1132 ????    0x5bb  0xcb     U       U    qubuts
1133 ????    0x5bc  0xcc     D       D    dagesh
1134 ????    0x5bd  0xcd     ]T      ]T   meteg
1135 ????   0x5be  0xce     ]Q      ]Q   maqaf
1136 ????    0x5bf  0xcf     ]R      ]R   rafe
1137 ????   0x5c0  0xd0     ]p      ]p   paseq
1138 ????    0x5c1  0xd1     SR      SR   shin-dot
1139 ????    0x5c2  0xd2     SL      SL   sin-dot
1140 ??    0x5c3  0xd3     ]P      ]P   sof-pasuq
1141 ??    0x5f0  0xd4     VV      VV   double-vav
1142 ??    0x5f1  0xd5     VY      VY   vav-yod
1143 ??    0x5f2  0xd6     YY      YY   yod-yod
1145 The following are only available in utf-8
1147 Cantillation marks:
1148 glyph
1149 Char utf-8 hebrew name
1150 ????    0x591   C:   etnahta
1151 ????    0x592   Cs   segol
1152 ????    0x593   CS   shalshelet
1153 ????    0x594   Cz   zaqef qatan
1154 ????    0x595   CZ   zaqef gadol
1155 ????    0x596   Ct   tipeha
1156 ????    0x597   Cr   revia
1157 ????    0x598   Cq   zarqa
1158 ????    0x599   Cp   pashta
1159 ????    0x59a   C!   yetiv
1160 ????    0x59b   Cv   tevir
1161 ????    0x59c   Cg   geresh
1162 ????    0x59d   C*   geresh qadim
1163 ????    0x59e   CG   gershayim
1164 ????    0x59f   CP   qarnei-parah
1165 ????    0x5aa   Cy   yerach-ben-yomo
1166 ????    0x5ab   Co   ole
1167 ????    0x5ac   Ci   iluy
1168 ????    0x5ad   Cd   dehi
1169 ????    0x5ae   Cn   zinor
1170 ????    0x5af   CC   masora circle
1172 Combining forms:
1173 ???    0xfb20  X`   Alternative `ayin
1174 ???    0xfb21  X'   Alternative 'alef
1175 ???    0xfb22  X-d  Alternative dalet
1176 ???    0xfb23  X-h  Alternative he
1177 ???    0xfb24  X-k  Alternative kaf
1178 ???    0xfb25  X-l  Alternative lamed
1179 ???    0xfb26  X-m  Alternative mem-sofit
1180 ???    0xfb27  X-r  Alternative resh
1181 ???    0xfb28  X-t  Alternative tav
1182 ???    0xfb29  X-+  Alternative plus
1183 ???    0xfb2a  XW   shin+shin-dot
1184 ???    0xfb2b  Xw   shin+sin-dot
1185 ???    0xfb2c  X..W  shin+shin-dot+dagesh
1186 ???    0xfb2d  X..w  shin+sin-dot+dagesh
1187 ???    0xfb2e  XA   alef+patah
1188 ???    0xfb2f  XO   alef+qamats
1189 ???    0xfb30  XI   alef+hiriq (mapiq)
1190 ???    0xfb31  X.b  bet+dagesh
1191 ???    0xfb32  X.g  gimel+dagesh
1192 ???    0xfb33  X.d  dalet+dagesh
1193 ???    0xfb34  X.h  he+dagesh
1194 ???    0xfb35  Xu  vav+dagesh
1195 ???    0xfb36  X.z  zayin+dagesh
1196 ???    0xfb38  X.T  tet+dagesh
1197 ???    0xfb39  X.y  yud+dagesh
1198 ???    0xfb3a  X.K  kaf sofit+dagesh
1199 ???    0xfb3b  X.k  kaf+dagesh
1200 ???    0xfb3c  X.l  lamed+dagesh
1201 ???    0xfb3e  X.m  mem+dagesh
1202 ???    0xfb40  X.n  nun+dagesh
1203 ???    0xfb41  X.s  samech+dagesh
1204 ???    0xfb43  X.P  pe sofit+dagesh
1205 ???    0xfb44  X.p  pe+dagesh
1206 ???    0xfb46  X.x  tsadi+dagesh
1207 ???    0xfb47  X.q  qof+dagesh
1208 ???    0xfb48  X.r  resh+dagesh
1209 ???    0xfb49  X.w  shin+dagesh
1210 ???    0xfb4a  X.t  tav+dagesh
1211 ???    0xfb4b  Xo   vav+holam
1212 ???    0xfb4c  XRb  bet+rafe
1213 ???    0xfb4d  XRk  kaf+rafe
1214 ???    0xfb4e  XRp  pe+rafe
1215 ???    0xfb4f  Xal  alef-lamed
1217 ==============================================================================
1218 10. UTF-8を使う (Using UTF-8)              *mbyte-utf8* *UTF-8* *utf-8* *utf8*
1219                                                         *Unicode* *unicode*
1220 ユニコードは、他の文字セットをすべて含むように設計された。そのため、どんな言語
1221 のテキストでもユニコードを使って書くことができる(希少な言語を除く)。そして、他
1222 のエンコーディングでは混在させることが不可能な言語でも、一つのファイルに混在さ
1223 せることが可能である。
1225 ユニコードはいくつかの方法でエンコードされる。もっとも一般的なのは、16ビットで
1226 文字を表わすUCS-2と、1文字をそれぞれ1バイトかそれ以上の複数バイトで表わすUTF-8
1227 である。Vimはそれらすべてのエンコーディングをサポートしているが、ユニコードの
1228 内部表現には常にUTF-8が使われる。
1230 Vimは幅広くUTF-8をサポートしており、それは以下の環境で機能する:
1231 - utf-8サポートが有効になっているxterm
1232 - Athena、Motif、GTK、のGUI
1233 - MS-Windows GUI
1235 全角文字は'guifontwide'や'guifontset'を使うと最もうまく表示することができる。
1236 'guifont'だけを設定している場合は、全角文字は通常の幅で描画され、足りない幅が
1237 空白で埋められる。Note:オプション'guifontset'はGTK+ 2 GUIでは使用しない。
1239                                         *mbyte-combining* *mbyte-composing*
1240 合成文字や結合文字を使うと、先行文字の意味を変えることができる。結合文字は先行
1241 文字に重ねて描画される。
1242 デフォルトで2文字までの結合文字を扱うことができる。この値はオプション
1243 'maxcombine'で変更できる。
1244 テキストの編集中は、合成文字は先行文字の一部として扱われる。例えば、初期設定で
1245 は、"x"は文字を削除するときに、連なる合成文字をいっぺんに削除する。オプション
1246 'delcombine'がオンのときには、'x'は1回に1文字の結合文字を削除して、最後に基底
1247 文字を削除する。入力するときには、まず1文字目を入力して、そして合成文字を入力
1248 する。すると、文字が合成される。"r"コマンドを使って結合文字を入力することはで
1249 きない。結合文字がさらに入力されるかどうか知ることができないからである。代りに
1250 "R"を使う。
1251 訳注: combining character 結合文字
1252 訳注: composing character 合成文字
1253 訳注: base character      基底文字
1254 訳注: preceding character 先行文字?
1256 UTF-8として不正なバイト列はそれぞれ1バイトの文字として扱われ、<xx>と表示され
1257 る。この"xx"はそのバイトの16進数である。
1259 Overlong sequenceに対して特別な処理はされない。通常の文字と同じように表示され
1260 る。Overlong sequenceはどんな検索パターンにもマッチしないかもしれない。
1261 (Overlong sequenceとは、文字を表すために必要なバイトよりも多くのバイトでその文
1262 字を表現しているバイト列のこと。) "<00>"と表示されているNUL(zero)は例外。
1263 訳注: たぶん、"<00>"と表示されてるOverlong sequenceだけはたとえ|/\_.|でもマッ
1264 訳注: チしないということ。
1266 ファイルやバッファには、ユニコードで表現できる範囲(31ビット)の文字をすべて書く
1267 ことができる。しかし、16ビットの範囲内の文字しか表示することができない。使用し
1268 ているフォントがその文字を持っていない場合も表示できない。
1270 便利なコマンド:
1271 - "ga"はカーソル位置の文字のコードを10進数、16進数、8進数で表示する。合成文字
1272   も表示される。(表示が途切れてしまった場合は、":messages"を使う)。
1273 - "g8"は文字のUTF-8コードを16進数で表示する。合成文字も表示される。
1274 - ":set encoding=utf-8 fileencodings="とすると、すべてのファイルでUTF-8を使う
1275   ことを強制できる。'encoding'と'fileencodings'の初期設定はロケールの値に応じ
1276   て設定される。
1277 訳注: わからない
1278 訳注:- ":set encoding=utf-8 fileencodings=" forces using UTF-8 for all files.  The
1279 訳注:  default is to use the current locale for 'encoding' and set 'fileencodings'
1280 訳注:  to automatically the encoding of a file.
1283 VimをUTF-8モードで起動する (STARTING VIM)
1285 ロケールがUTF-8の場合、Vimは自動的にUTF-8モードで起動する。
1287 UTF-8以外のロケールを使っている場合はこのようにする: >
1289         set encoding=utf-8
1291 メニューに使われるフォントを変える必要があるかもしれない。残念ながら、これはい
1292 つもうまくいくとは限らない。システムに依存する説明は下記、または'langmenu'を参
1293 照。
1296 X-WindowでUTF-8を使う (USING UTF-8 IN X-Windows)    *utf-8-in-xwindows*
1298 Note: この項はGTK+ 2 GUIには当てはまらない。
1300 使用するフォントを選択する必要がある。全角文字を表示するにはさらに別のフォント
1301 が必要。設定するには次の三つの方法がある:
1303 1. 'guifont'を設定して、'guifontwide'はVimに設定させる
1304 2. 'guifont'と'guifontwide'を設定する
1305 3. 'guifontset'を設定する
1307 詳細は各オプションの説明を参照。例: >
1309    :set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
1311 メニューで使用されるフォントも変更することができる。これはMotifでのみ機能す
1312 る。":hi Menu font={fontname}"コマンドを使って設定する。|:highlight|
1315 UTF-8を入力する (TYPING UTF-8)                               *utf-8-typing*
1317 X-Windowを使っているなら、UTF-8をサポートしているインプットメソッド使用する。
1319 システムがUTF-8の入力をサポートしていない場合でも、'keymap'を使って入力するこ
1320 とができる。ASCII文字を複数入力することでUTF-8の文字を入力するようなキーマップ
1321 ファイルを作ることができる。|mbyte-keymap|を参照。
1323 他にも、XIMを利用することができる言語に、ロケールを設定する方法がある。その場
1324 合は、'termencoding'をその言語に設定する。Vimは入力された文字を'termencoding'
1325 から'encoding'へ変換する。
1327 すべての方法が使えなくても、4文字の16進数で文字コードを直接入力することができ
1328 る: >
1330         CTRL-V u 1234
1332 "1234"は16進数として解釈される。正しく4文字を入力しなくてはいけない。必要であ
1333 ればゼロを前置する。
1335 コマンド引数 (COMMAND ARGUMENTS)                      *utf-8-char-arg*
1337 |f|、|F|、|t|、|r|のようなコマンドは一つの文字を引数に取る。UTF-8では一文字か
1338 二文字の合成文字の場合がある。Vimは合成文字の入力かどうかを調べるために次の入
1339 力を待ったりはしないため、合成文字は基底文字と同時に入力する必要がある。そのよ
1340 うな文字は'keymap'や|:lmap|を使うと簡単に入力することができる。
1342 行内検索をするコマンド(|f|など)は合成文字を次のように処理する。非合成文字を検
1343 索するときは、合成されている文字とされていない文字の両方がマッチする。合成文字
1344 を検索するときは、合成文字だけがマッチする。すべての人が合成文字を入力できるわ
1345 けではないので、このようになっている。
1346 訳注: 例えば、か(U+304B) + 濁点(U+3099) という合成文字は"fか"でマッチする
1349 ==============================================================================
1350 11. 主なオプション (Overview of options)               *mbyte-options*
1352 これらのオプションはマルチバイトテキストのファイルの編集に関係する。詳細は
1353 options.txtの説明を参照。
1355 'encoding'      キーボード入力や表示に使われるエンコーディング。これは新規ファ
1356                 イルのエンコーディングの初期設定でもある。
1358 'fileencoding'  ファイルのエンコーディング。'encoding'と違う場合、ファイルの読
1359                 み書き時にエンコーディングが変換される。
1361 'fileencodings' ファイルに使うことができるエンコーディングのリスト。ファイルを
1362                 開くとき、リストの先頭から順番に変換を試して、エラーが起きな
1363                 かった最初のものが'fileencoding'として使われる。
1365 'charconvert'   あるエンコーディングから別のエンコーディングへファイルを変換す
1366                 る式。
1368 'formatoptions' このオプションにフラグ'm'を含めると、フォーマット時に、(文字の
1369                 コードが256以上の)マルチバイト文字のところで改行することができ
1370                 る。これは、どこでも改行することができる言語を編集するときに
1371                 便利である。
1372 訳注:             at a multibyte character of 256 or higher.  Thus is useful for
1373 訳注:             Thusはtypo?
1375 'guifontset'    マルチバイトエンコーディングの文字に使うフォントのリスト。この
1376                 オプションが設定されていれば'guifont'の代りに使用される。
1378 'keymap'        キーボードマッピングの名前を指定する。
1380 ==============================================================================
1382 マルチバイト機能は、特に以下の方々の貢献による:
1383         Chi-Deok Hwang <hwang@mizi.co.kr>
1384         Nam SungHyun <namsh@kldp.org>
1385         K.Nagano <nagano@atese.advantest.co.jp>
1386         Taro Muraoka  <koron@tka.att.ne.jp>
1387         Yasuhiro Matsumoto <mattn@mail.goo.ne.jp>
1389  vim:tw=78:ts=8:ft=help:norl: