Usr_45
Nvim :help
ページは、ここから生成され、ソースには tree-sitter-vimdoc パーサーが使用されています。
VIM ユーザーマニュアル - Bram Moolenaar 著
言語(ロケール)を選択する
Vim のメッセージは複数の言語で表示できます。この章では、使用する言語を変更する方法と、さまざまな言語のファイルを扱う方法について説明します。
メッセージの言語
Vim を起動すると、環境をチェックして使用言語を判別します。通常は問題なく動作し、メッセージは(利用可能な場合)使用言語で表示されます。現在の言語を確認するには、次のコマンドを使用します。
:language
"C" と表示された場合は、デフォルトの英語が使用されています。
メッセージを別の言語で表示したい場合は、いくつかの方法があります。どの方法を使用するかは、システムの機能によって異なります。最初の方法は、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 ディレクトリに手順があります。翻訳はそれほど難しくありません。プログラマーである必要はありません。もちろん、英語と翻訳先の言語の両方を知る必要があります。翻訳に満足したら、他の人にも利用できるようにすることを検討してください。
https://github.com/vim/vim にアップロードするか、Vim のメンテナ <
[email protected]> にメールで送信してください。または両方。
デフォルトのメニューは英語です。ローカル言語を使用するには、翻訳する必要があります。通常、メッセージと同様に、環境が使用言語に設定されている場合は自動的に実行されます。そのためには、特別なことは何もする必要はありません。ただし、言語の翻訳が利用可能な場合にのみ機能します。ドイツにいて、言語がドイツ語に設定されているが、「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
1 つの欠点があります。自分で定義したすべてのメニューが消えます。それらも再定義する必要があります。
利用可能なメニュー翻訳を確認するには、次のディレクトリを参照してください。
ファイルは menu_{language}.vim という名前です。使用したい言語が表示されない場合は、独自の翻訳を行うことができます。最も簡単な方法は、既存の言語ファイルをコピーして変更することです。最初に ":language" コマンドで使用言語の名前を確認します。この名前を使用しますが、すべての文字を小文字にします。次に、
'runtimepath' の先頭にある、独自のランタイムディレクトリにファイルをコピーします。たとえば、Unix の場合は次のようになります。
:!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.config/nvim/lang/menu_nl_be.iso_8859-1.vim
翻訳のヒントは "$VIMRUNTIME/lang/README.txt" にあります。
Vim は、編集するファイルが使用言語のエンコーディングであると推測します。多くのヨーロッパ言語では、これは "latin1" です。各バイトは 1 文字です。つまり、256 の異なる文字が可能です。アジア言語では、これは十分ではありません。これらは主に 2 バイトエンコーディングを使用し、1 万を超える文字を提供します。テキストに複数の異なる言語が含まれている場合、これはまだ十分ではありません。ここで Unicode が登場します。Unicode は、一般的に使用される言語で使用されるすべての文字を含めるように設計されました。「他のすべてを置き換えるスーパーエンコーディング」です。しかし、まだそれほど使用されていません。幸いなことに、Vim はこれら 3 種類のエンコーディングをサポートしています。また、いくつかの制限はありますが、環境がテキストとは異なる言語を使用している場合でも使用できます。それでも、使用言語のエンコーディングのファイルのみを編集する場合は、デフォルトで問題なく動作し、何もする必要はありません。以下は、異なる言語を編集する場合にのみ関連します。
GUI での Unicode の使用
Unicode の優れた点は、情報を失うことなく他のエンコーディングに変換したり、元に戻したりできることです。Vim で内部的に Unicode を使用すると、あらゆるエンコーディングのファイルを編集できます。残念ながら、Unicode をサポートするシステムの数はまだ限られています。したがって、使用言語が Unicode を使用している可能性は低いです。Vim に 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 に指示します。これは、バッファ内のテキスト(編集中のファイル)、レジスタ、Vim スクリプトファイルなどに適用されます。
'encoding' は Vim の内部の設定と見なすことができます。この例では、システムにこのフォントがあることを前提としています。例のなまえは X Window System 用です。このフォントは、Unicode サポートで xterm を拡張するために使用されるパッケージにあります。
MS-Windows の場合、一部のフォントの Unicode 文字数は限られています。"Courier New" フォントを使用してみてください。[編集]/[フォントの選択...] メニューを使用して、利用可能なフォントを選択して試すことができます。ただし、固定幅フォントのみ使用できます。例:
:set guifont=courier_new:h12
うまくいかない場合は、フォントパックを入手してみてください。
これで、Vim に内部的に Unicode を使用し、Unicode フォントでテキストを表示するように指示しました。
Unicode ターミナルでの Unicode の使用
Unicode を直接サポートするターミナルがあります。XFree86 に付属する標準の xterm はその 1 つです。それを例として使用しましょう。まず、xterm は Unicode サポート付きでコンパイルされている必要があります。"-u8" 引数を付けて xterm を起動します。フォントを指定する必要がある場合もあります。例:
xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
これで、このターミナル内で Vim を実行できます。
通常のターミナルでの Unicode の使用
Unicode ファイルを操作したいが、Unicode をサポートするターミナルがないとします。ターミナルでサポートされていない文字は表示されませんが、Vim でこれを行うことができます。テキストのレイアウトは保持されます。
Unicode 文字を含むファイルを編集してみてください。Vim は、ターミナルが表示できない文字がある場所に疑問符(またはアンダースコアなどの文字)を配置します。疑問符にカーソルを移動し、次のコマンドを使用します。
ga
Vim は、文字のコードを含む行を表示します。これは、それがどのような文字であるかについてのヒントになります。Unicode テーブルで調べることができます。時間があれば、実際にその方法でファイルを表示できます。
注: 'encoding' は Vim 内のすべてのテキストに使用されるため、変更するとすべての非 ASCII テキストが無効になります。レジスタと
shada-file を使用すると、これに気付くでしょう(例: 記憶された検索パターン)。
'encoding' を vimrc ファイルに設定し、そのままにしておくことをお勧めします。
Vim を Unicode を使用するように設定し、16 ビット Unicode のファイルを編集したいとします。簡単そうですね。実際、Vim は内部的に utf-8 エンコーディングを使用しているため、文字セット(Unicode)とエンコーディング(utf-8 または 16 ビット)には違いがあるため、16 ビットエンコーディングを変換する必要があります。Vim は、編集しているファイルの種類を検出しようとします。
'fileencodings' オプションのエンコーディング名を使用します。Unicode を使用する場合、デフォルト値は "ucs-bom,utf-8,latin1" です。これは、Vim がファイルをチェックして、これらのエンコーディングのいずれかであるかどうかを確認することを意味します。
ucs-bom ファイルはバイトオーダーマーク(BOM)で始まる必要があります。これにより、16 ビット、32 ビット、および utf-8 の Unicode エンコーディングを検出できます。utf-8 utf-8 Unicode。バイトシーケンスが utf-8 で無効な場合は拒否されます。latin1 昔ながらの 8 ビットエンコーディング。常に機能します。
その 16 ビット Unicode ファイルの編集を開始し、BOM がある場合、Vim はこれを検出し、ファイルを読み取るときに utf-8 に変換します。末尾に s がない
'fileencoding' オプションは、検出された値に設定されます。この場合は "utf-16le" です。これは、Unicode、16 ビット、リトルエンディアンであることを意味します。このファイル形式は MS-Windows で一般的です(例: レジストリファイル)。ファイルを書き込むとき、Vim は
'fileencoding' と
'encoding' を比較します。異なる場合は、テキストが変換されます。
'fileencoding' が空の値の場合、変換は行われません。したがって、テキストは
'encoding' でエンコードされていると想定されます。
デフォルトの
'fileencodings' 値が適切でない場合は、Vim が試行するエンコーディングに設定します。値が無効であると判明した場合にのみ、次の値が使用されます。"latin1" を最初に配置しても機能しません。無効になることはないためです。例として、ファイルに BOM がなく、utf-8 ではない場合に日本語にフォールバックするには、次のようにします。
:set fileencodings=ucs-bom,utf-8,sjis
推奨値については、
encoding-values を参照してください。他の値も機能する場合があります。これは利用可能な変換によって異なります。
エンコーディングの強制
自動検出が機能しない場合は、ファイルのエンコーディングを Vim に指示する必要があります。例:
:edit ++enc=koi8-r russian.txt
"++enc" 部分は、このファイルのみに使用されるエンコーディングの名前を指定します。Vim は、指定されたエンコーディング(この例ではロシア語)から
'encoding' にファイルを変換します。
'fileencoding' も指定されたエンコーディングに設定されるため、ファイルを書き込むときに逆変換を実行できます。ファイルを書き込むときにも同じ引数を使用できます。この方法で、Vim を使用してファイルを変換できます。例:
:write ++enc=utf-8 russian.txt
注: 変換によって文字が失われる可能性があります。エンコーディングから Unicode に変換して元に戻す変換は、無効な文字がない限り、ほとんどの場合この問題はありません。Unicode から他のエンコーディングへの変換では、ファイルに複数の言語がある場合、情報が失われることがよくあります。
コンピュータのキーボードには、100個強のキーしかありません。言語によっては数千の文字を使用し、Unicode には10万以上の文字があります。では、これらの文字はどのように入力するのでしょうか? まず、特殊文字をあまり使用しない場合は、ダイグラフを使用できます。これは
24.9 ですでに説明されています。キーボードのキーよりもはるかに多くの文字を使用する言語を使用する場合は、入力メソッド (IM) を使用することをお勧めします。これには、入力されたキーから結果の文字への変換を学習する必要があります。IM が必要な場合は、おそらくシステムに既に IM がインストールされています。他のプログラムと同様に Vim でも動作するはずです。
キーマップ
一部の言語では、文字セットはラテン語とは異なりますが、同様の数の文字を使用します。キーを文字にマッピングすることが可能です。Vim はこれのためにキーマップを使用します。ヘブライ語を入力したいとします。次のようにキーマップを読み込むことができます。
:set keymap=hebrew
:set keymap=hebrew
これで、挿入モードでヘブライ語を入力できます。ノーマルモードと ":" コマンドを入力するときは、Vim は自動的に英語に切り替わります。次のコマンドを使用して、ヘブライ語と英語を切り替えることができます。
CTRL-^
:set keymap=
マッピングのリストを表示するには、次のコマンドを使用します。
:lmap
:lmap
:echo globpath(&rtp, "keymap/*.vim")
:mkvimrc
自作キーマップ
keymap/{name}.vim
または
keymap/{name}_{encoding}.vim
{name}
はキーマップの名前です。わかりやすい名前を選択しますが、既存のキーマップとは異なる名前にします(既存のキーマップファイルを置き換えたい場合を除く)。 {name}
にはアンダースコアを含めることはできません。必要に応じて、アンダースコアの後に使用されるエンコーディングを追加します。例:
keymap/hebrew.vim
keymap/hebrew_utf-8.vim
ファイルの内容は自明です。Vim に付属のキーマップをいくつか見てください。詳細は、
mbyte-keymap を参照してください。
最後の手段
他のすべての方法が失敗した場合は、CTRL-V
を使用して任意の文字を入力できます。
エンコーディングの種類 範囲
8ビット
CTRL-V
123 10進数 0-255