Next: , Previous: , Up: 目次   [Index]


言語を選擇する

*usr_45.txt*	For Vim バージョン 8.1.  Last change: 2008 Nov 15

		     VIM USER MANUAL - by Bram Moolenaar

				言語を選擇する

Vim のメッセージは言語を變更できます。本章では、言語を變更する方法を說明します。樣々な言語で書かれたファイルを取り扱ふ方法も說明します。

|45.1|メッセージの言語
|45.2|メニューの言語
|45.3|他のエンコーディングを使ふ
|45.4|異なるエンコーディングのファイルを編輯する
|45.5|言語のテキストを入力する

メッセージの言語

Vim を起動すると、あなたが使つてゐる言語を知るために環境がチェックされます。ほとんどの場合、この處理はうまく動作します。そして、メッセージはあなたの言語で表示されます (それが利用可能なら)。現在の言語を確認するには、次のコマンドを使ひます:

:language

"C" と表示された場合は、デフォルト (英語) が使はれてゐます。

Note:
異なる言語を扱へるのは、Vim のコンパイル時にその機能が有效にされた場合だけです。機能の有無は、":version" コマンドを實行し、"+gettext" と "+multi_lang" の表示を確認してください。それが表示されてゐれば問題ありません。"-gettext" か "-multi_lang" と表示された場合は他の Vim を探してください。

異なる言語でメッセージを表示する方法はいくつかあります。どの方法を使ふかはシステムによつて違ひます。

1 つ目は、Vim を起動する前に使用したい言語を環境變數に設定する方法です。Unix の場合の例:

env LANG=de_DE.ISO_8859-1  vim

この方法は、指定した言語がシステムでサポートされてゐる場合のみ使へます。この方法の利點は、GUI や何かのライブラリのメッセージも適切な言語で表示されることです。缺點は、Vim を起動する前に環境變數を設定しなければならないことです。Vim の實行中に言語を變更したい場合は、2 つ目の方法を使ひます:

:language fr_FR.ISO_8859-1

この方法では言語の名前をいくつか試すことになるかもしれません。システムでサポートされてゐない名前を使ふとエラーメッセージが表示されます。飜譯されたメッセージが利用可能でない場合はエラーメッセージは表示されません。Vim は靜かに英語を選擇します。

利用可能な言語の一覽を調べるには、その一覽が入つてゐるディレクトリを探してください。私のシステムでは "/usr/share/locale" にあります。"/usr/lib/locale" に入つてゐるシステムもあります。"setlocale" のマニュアルページにディレクトリの場所を示すヒントがあるかもしれません。

言語の名前は正確に入力してください。大文字と小文字の違ひは重要です。"-" と "_" は閒違へやすいので注意してください。

メッセージ、編輯するテキスト、時閒の書式など、それぞれに別の言語を設定できます。|:language| 參照。

自分でメッセージを飜譯する

あなたの言語の飜譯メッセージが用意されてゐない場合、自分で飜譯することもできます。それには、Vim のソースコードと GNU gettext パッケージを入手してください。ソースを展開すると、src/po/README.txt に說明が入つてゐます。

飜譯作業はそれほど難しくありません。プログラマでなくても大丈夫です。しかし當然ですが、英語と飜譯先の言語を兩方知つてゐる必要はあります。

納得のいく飜譯ができたら、それを他の人にも提供してもらへないでせうか。vim-online (http://vim.sf.net) にアップロードするか、Vim のメンテナー <maintainer@vim.org> にメールを送つてください。兩方でも構ひません。

メニューの言語

デフォルトのメニューは英語です。メニューが飜譯されてゐれば、あなたの國の言語で表示することができます。メッセージと同樣、環境が設定してあれば、自動的に適切な言語が選擇されます。そのために何かを設定する必要はありません。メニューが飜譯されてゐれば動作します。

例へば、ドイツに住んでゐてドイツ語を使つてゐるにもかかはらず、"Datei" ではなく"File" と表示したい場合、次のコマンドでメニューを英語に戾すことができます:

:set langmenu=none

特定の言語を選擇することもできます:

:set langmenu=nl_NL.ISO_8859-1

前述したやうに、"-" と "_" の違ひは重要です。ただし、この場合は大文字と小文字の違ひは無視されます。

langmenu’ オプションはメニューがロードされる前に設定する必要があります。メニューが定義された後では、單に ’langmenu’ を設定しただけでは何も變更されません。ですから、’langmenu’ は vimrc ファイルの中で設定してください。

どうしても Vim の實行中にメニューの言語を變更したい場合は、次の手順を實行してください:

:source $VIMRUNTIME/delmenu.vim
:set langmenu=de_DE.ISO_8859-1
:source $VIMRUNTIME/menu.vim

ただし、ユーザーが自分で定義したメニューは失はれてしまふので、それらを再定義する必要があります。

自分でメニューを飜譯する

利用可能な飜譯濟みメニューは、次のディレクトリにあります:

$VIMRUNTIME/lang

ファイルは menu_{language}.vim といふ名前になつてゐます。使用したい言語がない場合は自分で飜譯することもできます。最も簡單なのは、既存のファイルをコピーして、それを變更する方法です。

まづ、あなたの言語の名前を ":language" コマンドで確認してください。その名前を使ひます。ただし、すべてを小文字にします。そして、ファイルを自分のランタイムディレクトリにコピーします (’runtimepath’ の早めに見つかるやうに)。例へば、Unix なら次のやうにします:

:!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim

"$VIMRUNTIME/lang/README.txt" には飜譯のヒントが書かれてゐます。

他のエンコーディングを使ふ

ファイルを開くとき、そのファイルはユーザーの言語のエンコーディングで保存されてゐるものと推測されます。多くのヨーロッパ系言語では "latin1" が使はれます。その場合、1 バイトで 1 文字を表すので、合計 256 個の文字を扱へます。アジア系言語の場合はそれでは足りません。それらの言語はダブルバイトエンコーディングを使つて、1 萬以上の文字を扱ひます。それでも、複數の言語を混在させるには十分ではありません。さういふときは Unicode の出番です。Unicode は一般的に使はれてゐる言語の文字をすべて網羅してゐます。Unicode は "他のすべてのエンコーディングに取つて代はるスーパーエンコーディング" なのです。しかしまだ廣くは普及してゐません。

Vim はこのやうな 3 種類のエンコーディングをサポートしてゐます。そして、多少の制限はありますが、使用してゐる言語とは違ふ言語のテキストを扱ふことができます。

とはいへ、自分の言語のテキストだけを扱ふ場合は、Vim は何も設定しなくても適切に動作します。以下の說明は、他の言語のテキストを編輯したい場合にだけ必要です。

GUI で Unicode を使ふ

Unicode には他のエンコーディングと相互に變換しても情報が缺落しないといふ長所があります。Vim の內部で Unicode を使ふやうに設定すれば、あらゆるエンコーディングのファイルを編輯することができます。

殘念ながら、Unicode をサポートしてゐるシステムはまだ限られてゐます。言語のエンコーディングが Unicode になつてゐることはまれです。その場合、Unicode の使用を宣言し、非 Unicode システムと協調方法を設定する必要があります。

まづは、(Unicode文字を表示可能な) GUI 版の Vim を設定します。次のやうにします:

:set encoding=utf-8
:set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1

encoding’ オプションに使用したいエンコーディングを設定します。これは、バッファ (編輯中のファイル) のテキスト、レジスタ、Vim script ファイル、などに使はれます。’encoding’ は Vim の內部エンコーディングであると言へます。

この例では、設定してゐるフォントがシステムに存在することを前提にしてゐます。例で使用されてゐるのは X Window System のフォント名です。このフォントは Unicode をサポートした擴張 xterm で使はれるパッケージに入つてゐます。フォントがない場合は、次の場所から入手できます:

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

MS-Windows では、Unicode 文字を部分的に持つてゐるフォントがいくつかあります。"Courier New" フォントを試してみてください。メニューの 編輯/フォント設定 を使ふと、利用可能な一覽からフォントを選擇できます。使用できるのは等幅フォントのみです。例:

:set guifont=courier_new:h12

これがうまくいかない場合は、フォントパックを入手してください。Microsoft が場所を變更してゐなければ、次の場所にあります:

http://www.microsoft.com/typography/fonts/default.aspx

さて、內部エンコーディングを Unicode にして、Unicode フォントでテキスト表示するやうに設定できました。しかし、入力される文字はまだ元の言語のエンコーディングのままです。入力を Unicode に變換する必要があります。’termencoding’ オプションに入力のエンコーディングを設定します。次のやうに設定します:

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

encoding’ に utf-8 を設定する前に、元の値を ’termencoding’ に代入してゐます。この設定が動作するかどうか、實際にあなたの環境で試してください。特に、アジア系言語の入力メソッドを使つて Unicode のテキストを編輯したい場合は、正しく動作する必要があります。

Unicode 端末で Unicode を使ふ

Unicode をサポートしてゐる端末がいくつかあります。XFree86 に附屬の標準 xterm もその 1 つです。ここではそれを使つて說明します。

まず何よりも、xterm が Unicode サポート付きでコンパイルされてゐる必要があります。|UTF8-xterm| を參照し、その確認方法と、必要ならコンパイル方法も確認してください。

xterm に "-u8" 引數を付けて起動します。フォントを指定する必要もあるかもしれません。例:

xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1

この端末の中で Vim を實行します。前述したやうに ’encoding’ を "utf-8" に設定してください。設定は以上です。

普通の端末で Unicode を使ふ

Unicode をサポートしてゐない端末で Unicode ファイルを取り扱ふことができます。ただし、端末でサポートされてゐない文字は表示されません。テキストのレイアウトは失はれません:

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

これは GUI での設定と同じです。しかし作用は違ひます。Vim はテキストを表示するときに、端末に文字を送る前に、それを變換します。それによつて、端末の文字化けを防ぐことができます。

これには、’termencoding’ と ’encoding’ の閒での變換が可能である必要があります。latin1 から Unicode への變換は Vim の內部で行はれるので常に機能します。他の變換には |+iconv| 機能が必要です。

實際に Unicode のテキストを編輯してみてください。端末に表示できない文字は、クエスチョンマーク (あるいはアンダースコアや他の文字) として表示されます。クエスチョンマークの上にカーソルを動かして次のコマンドを實行してください:

ga

文字コード情報が表示されます。そこに實際に格納されてゐる文字を知るヒントになります。文字コードを Unicode の表から調べることもできます。時閒さへあれば、實際にこの方法でファイルを見ることも可能です。

Note:
encoding’ は Vim 內部のすべてのテキストで使はれるので、設定を變更すると 非 ASCII のテキストは不正になつてしまひます。レジスタの中身や ’viminfo’ ファイル (例へば記錄された檢索パターン) などで確認できます。’encoding’ は vimrc ファイルの中で設定し、それ以外では變更しないことが推奬されてゐます。

異なるエンコーディングのファイルを編輯する

Unicode を使ふやうに設定された Vim で 16-bit Unicode のファイルを開く場合、實際には Vim の內部では utf-8 が使はれてゐるので、エンコーディングの變換が必要になります。文字セット (Unicode) とエンコーディング (utf-8 or 16-bit) は別ものなのです。

ファイルを開くとき、Vim はファイルのエンコーディングを判別しようとします。それには ’fileencodings’ オプションが使はれます。Unicode を使つてゐるときは、その初期設定は "ucs-bom,utf-8,latin1" です。この設定を使つてファイルのエンコーディングがチェックされます:

ucs-bomファイルの先頭がバイトオーダーマーク (BOM) で開始する場合。Unicode の 16-bit、32-bit、utf-8 エンコーディングを判別できます。
utf-8utf-8 Unicode。utf-8 として不正なバイトがあつた場合は拒否されます。
latin1古き良き 8-bit エンコーディング。常に有效です。

16-bit Unicode ファイルを開いたとき、BOM が付いてゐたなら、エンコーディングが判別され、ファイルは utf-8 に變換されながら讀み込まれます。’fileencoding’ (末尾に s なし) には判別されたエンコーディングが設定されます。この場合は "utf-16le" になります。"utf-16le" はリトルエンディアンの 16-bit Unicode を意味します。これは MS-Windows での一般的な形式です (例へばレジストリファイルなど)。

ファイルを保存するとき、’fileencoding’ と ’encoding’ が比較され、それが違つてゐた場合は、テキストが變換されます。

fileencoding’ の値が空の場合は變換は實行されません。つまり、テキストは ’encoding’ でエンコードするものと判斷されます。

fileencodings’ の初期設定が良くない場合は、チェックさせたいエンコーディングを自分で設定してください。設定の最初から順番に變換が試行されます。"latin1" を先頭に置くとうまく動作しません。それは "latin1" の變換が失敗することがないからです。例へば次の設定では、BOM がなく、utf-8 でもない場合に、Shift_JIS が使はれます:

:set fileencodings=ucs-bom,utf-8,sjis

エンコーディングの名前は |encoding-values| を參照してください。それ以外の名前も使へます。使用できる名前は變換ライブラリに依存します。

エンコーディングを强制する

自動判別が機能しない場合は、エンコーディングを指定する必要があります。例:

:edit ++enc=koi8-r russian.txt

"++enc" を使つてファイルのエンコーディングを指定します。ファイルは指定されたエンコーディング (例ではロシア語) から ’encoding’ に變換されます。’fileencoding’ は指定されたエンコーディングに設定されるので、保存するときには逆の變換が實行されます。

ファイルを保存するときにも同じ引數が使へます。すなはち Vim をコード變換ツールとして使ふこともできます。例:

:write ++enc=utf-8 russian.txt

Note:
變換によつて一部の文字が失はれることがあります。任意のエンコーディングから Unicode に變換し、それを元に戾す場合は、不正な文字が入つてゐない限り、そのやうな問題はほとんどありません。多言語で書かれたファイルを Unicode から他のエンコーディングに變換すると、情報が失はれます。

言語のテキストを入力する

コンピューターのキーボードには 100 個ほどのキーしかありません。しかし、數千の文字を持つ言語があり、Unicode には 10 萬以上の文字があります。どのやうにしてそれらの文字を入力するのでせうか?

それほど多くの文字を必要としない場合はダイグラフが使へます。ダイグラフについては |24.9| で說明しました。

キーボードのキー數よりはるかに多い文字を扱ふ場合はインプットメソッド (Input Method, IM) を使ひます。インプットメソッドを使ふには、目的の文字を入力するためのキー操作を學ぶ必要があります。あなたがインプットメソッドを必要とするなら、それはおそらくは最初からシステムに用意されてゐます。Vim でも他のプログラムと同樣にインプットメソッドを使ふことができます。詳細は、X Window system なら |mbyte-XIM| を、MS-Windows なら |mbyte-IME| を參照してください。

キーマップ

いくつかの言語は latin とは文字セットが異なるだけで、文字の數は同じやうな場合があります。その場合はキーを文字にマップすることができます。それにはキーマップを使ひます。

例へば、ヘブライ語を使ひたい場合は、次のやうにしてキーマップをロードします:

:set keymap=hebrew

キーマップファイルが檢索されます。これは ’encoding’ の設定に依存します。ファイルが見つからなかつた場合はエラーメッセージが表示されます。

さて、插入モードでヘブライ語を入力できるやうになりました。ただし、ノーマルモードのときや、":" コマンドを入力するときは、自動的に英語に切り替はります。次のコマンドでヘブライ語と英語を切り替へることができます:

CTRL-^

これは插入モードとコマンドラインモードでのみ機能します。ノーマルモードではまつたく別の機能です (オルタネートファイルにジャンプ)。

キーマップの使用狀態はモードメッセージに表示されます (’showmode’ が設定されてゐるなら)。GUI ではカーソルの色が變はります。

キーマップの使用狀態は ’iminsert’ と ’imsearch’ を設定することでも變更できます。

次のコマンドでマップの一覽を表示できます:

:lmap

利用可能なキーマップファイルの一覽は、GUI ならメニューの 編輯/キーマップ で確認できます。あるいは次のコマンドで一覽を表示できます:

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

自分でキーマップを作成する

自分でキーマップファイルを作成することができます。作成はそれほど難しくありません。目的の言語に近い既存のキーマップファイルを土臺にしてください。そのファイルを自分の "keymap" ディレクトリにコピーします。例へば、Unix なら "~/.vim/keymap" などを使ひます。

キーマップファイルの名前は次のやうな形式にします:

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

{name} はキーマップの名前です。分かりやすい名前を付けます。既存のキーマップとは違ふ名前にしてください (既存のキーマップファイルを置き換へるとき以外は)。{name} にはアンダースコアを含めることはできません。アンダースコアに續けてエンコーディングを指定することができます。例:

keymap/hebrew.vim
keymap/hebrew_utf-8.vim

ファイルの內容については實物を見れば分かると思ひます。Vim に附屬のキーマップを見てください。詳細は |mbyte-keymap| を參照。

最後の手段

すべての方法がダメだつたとしても、CTRL-V を使へばあらゆる文字を入力できます:

エンコード入力方法入力できる範圍
8-bitCTRL-V 12310 進數の 0-255
8-bitCTRL-V x a116 進數の 00-ff
16-bitCTRL-V u 013b16 進數の 0000-ffff
31-bitCTRL-V U 001303a416 進數の 00000000-7fffffff

入力するときはスペースは不要です。詳細は |i_CTRL-V_digit| を參照。


Next: , Previous: , Up: 目次   [Index]