Mbyte
Nvim :help
ページは、ソース から tree-sitter-vimdoc パーサーを使用して 生成 されています。
マルチバイトサポート
マルチバイト 中国語 日本語 韓国語 これは、1バイト(1オクテット)で表現できない文字を多く持つ言語でテキストを編集することについてです。例としては、中国語、日本語、韓国語などがあります。Unicodeについてもここで説明します。
最も一般的な機能の概要については、ユーザーマニュアルの
usr_45.txt を参照してください。メッセージやメニューの言語を変更する方法については、
mlang.txt を参照してください。
これは、Vimのマルチバイト機能の概要です。うまくいけば、説明どおりに動作し、それほど苦労せずにVimを使い始めることができます。何かがうまくいかない場合は、残りの部分を読む必要があります。Vimですべてのマルチバイト機能を使用できるようにするには、かなりの作業と実験が必要になる場合があることに驚かないでください。残念ながら、すべてのシステムはマルチバイト言語を扱う独自の方法を持っており、それは非常に複雑です。
ロケール
まず、現在のロケールが正しく設定されていることを確認する必要があります。システムがその言語を使用するようにインストールされている場合は、おそらくすぐに動作します。そうでない場合は、シェルで$LANG環境変数を設定することで動作させることができます。
setenv LANG ja_JP.EUC
残念ながら、ロケールの名前はシステムによって異なります。日本語は「ja_JP.EUCjp」または単に「ja」と呼ばれることもあります。現在使用されているものを見るには
:language
Vim内でロケールを変更するには、次のようにします。
:language ja_JP.EUC
これがうまくいかない場合は、Vimはエラーメッセージを表示します。これは、実験して、使用したいロケール名を見つけるための良い方法です。しかし、最初から使用されるように、シェルでロケールを設定することをお勧めします。
エンコーディング
Nvimは内部で常にUTF-8を使用します。したがって、
'encoding' オプションは常に "utf-8" に設定されており、変更できません。
Vim内部で使用されるすべてのテキストは、UTF-8になります。バッファ内のテキストだけでなく、レジスタ、変数などもUTF-8になります。
表示とフォント
端末(エミュレータ)で作業している場合は、Vimが使用しているエンコーディングであるUTF-8を受け入れることを確認する必要があります。そうでない場合、ASCIIのみが正しく表示および編集できます。
マルチバイト文字を入力するには、いくつかの方法があります。
システムのIMEを使用できます。
最も簡単な設定は、システム全体が作業したいロケールを使用している場合です。しかし、作業している1つのシェルに対してロケールを設定したり、Vim内だけで特定のロケールを使用したりすることも可能です。
世界には多くの言語があります。そして、少なくとも言語の数だけ異なる文化や環境があります。ある地域に対応する言語環境は「ロケール」と呼ばれます。これには、使用される言語、文字セット、ソートの照合順序、日付形式、通貨形式などの情報が含まれます。Vimにとって本当に重要なのは、言語と文字セットだけです。
システムがそれをサポートしている場合にのみ、ロケールを使用できます。一部のシステム、特に米国では、ロケールが少数しかありません。使用したい言語がシステムにない場合があります。その場合は、追加パッケージとしてインストールできる場合があります。その方法については、システムのドキュメントを確認してください。
ロケールがインストールされている場所は、システムによって異なります。たとえば、「/usr/share/locale」または「/usr/lib/locale」です。システムのsetlocale()マニュアルページを参照してください。
これらのディレクトリを見ると、各ロケールの正確な名前が表示されます。ほとんどの場合、大文字と小文字が区別されるため、「ja_JP.EUC」と「ja_jp.euc」は異なります。一部のシステムにはlocale.aliasファイルがあり、これにより「nl」のような短い名前から「nl_NL.ISO_8859-1」のような完全な名前への変換が可能です。
X-Windowには独自のロケール設定があることに注意してください。そして残念ながら、他の場所で使用されているものとは異なるロケール名を使用しています。これは混乱を招きます! Vimにとって重要なのは、setlocale()関数が使用するものであり、これは一般的にX-Windowのものではありません。実際に何が機能するかを見つけるために、いくつかの実験をする必要があるかもしれません。
言語 または 言語_地域 または 言語_地域.コードセット
地域とは国(またはその一部)を意味し、コードセットとは
文字セットを意味します。たとえば、ロケール名「ja_JP.eucJP」は次のことを意味します。 ja 言語は日本語です JP 国は日本です eucJP コードセットはEUC-JPです しかし、それは「ja」、「ja_JP.EUC」、「ja_JP.ujis」などである可能性もあります。そして残念ながら、特定の言語、地域、コードセットのロケール名は統一されておらず、システムによって異なります。
ロケール名の例
文字セット 言語 ロケール名
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環境変数を設定します。韓国語を使用する場合、ロケール名が「ko」であるとします。次の手順を実行します。
sh: export LANG=ko csh: setenv LANG ko
これを~/.profileまたは~/.cshrcファイルに配置して、常に使用できます。
または、Vimを起動するときに$LANGを指定します
sh: LANG=ko vim {vim-arguments}
csh: env LANG=ko vim {vim-arguments}
このために小さなシェルスクリプトを作成することができます。
Nvimでは、文字をエンコードするために内部で常にUTF-8が使用されます。これは、バッファ(メモリにロードされたファイル)、レジスタ、変数など、テキストが使用されるすべての場所に適用されます。
文字セット コードセット 文字セットはエンコーディングの別名です。微妙な違いがありますが、Vimを使用する場合はこれらは重要ではありません。「コードセット」は別の同様の名前です。
各文字は1つ以上のバイトとしてエンコードされます。すべての文字が1バイトでエンコードされている場合、これをシングルバイトエンコーディングと呼びます。最もよく使用されるのは「latin1」です。これにより、文字数は256に制限されます。これらのいくつかは制御文字であるため、テキストに使用できる文字はさらに少なくなります。
一部の文字が2バイト以上を使用する場合、これをマルチバイトエンコーディングと呼びます。これにより、256文字よりもはるかに多くの文字を使用できるようになり、これはほとんどの東アジア言語で必要になります。
ほとんどのマルチバイトエンコーディングは、最初の127文字に1バイトを使用します。これらはASCIIと同じであるため、使用されている言語に関係なく、プレーンASCIIテキストを簡単に交換できます。したがって、エンコーディングが間違って設定されていても、正しいテキストが表示される場合があります。
エンコーディング名 Vimは異なる文字エンコーディングのファイルを編集できます。大きく分けて3つのグループがあります。
1 8ビット シングルバイトエンコーディング、256種類の文字。主に米国とヨーロッパで使用されます。例:ISO-8859-1(Latin1)。すべての文字は1つの画面セルのみを占有します。
2 2バイト ダブルバイトエンコーディング、10000種類以上の文字。主にアジア諸国で使用されます。例:euc-kr(韓国語)画面セルの数はバイト数と同じです(最初のバイトが0x8eのeuc-jpを除く)。
u Unicode ユニバーサルエンコーディング、他のすべてを置き換えることができます。ISO 10646。数百万種類の文字。例:UTF-8。バイトと画面セルの関係は複雑です。
Vim内部ではUTF-8のみが使用されます。ただし、
'fileencoding' を使用して変換することで、他のエンコーディングのファイルを編集できます。
認識される
'fileencoding' 値には以下が含まれます:
エンコーディング値1 latin1 8ビット文字 (ISO 8859-1, cp1252でも使用) 1 iso-8859-n ISO_8859 バリアント (n = 2 から 15) 1 koi8-r ロシア語 1 koi8-u ウクライナ語 1 macroman MacRoman (Macintoshエンコーディング) 1 8bit-{name} 任意の8ビットエンコーディング (Vim固有の名前) 1 cp437 iso-8859-1に似ている 1 cp737 iso-8859-7に似ている 1 cp775 バルト語 1 cp850 iso-8859-4に似ている 1 cp852 iso-8859-1に似ている 1 cp855 iso-8859-2に似ている 1 cp857 iso-8859-5に似ている 1 cp860 iso-8859-9に似ている 1 cp861 iso-8859-1に似ている 1 cp862 iso-8859-1に似ている 1 cp863 iso-8859-8に似ている 1 cp865 iso-8859-1に似ている 1 cp866 iso-8859-5に似ている 1 cp869 iso-8859-7に似ている 1 cp874 タイ語 1 cp1250 チェコ語、ポーランド語など 1 cp1251 キリル文字 1 cp1253 ギリシャ語 1 cp1254 トルコ語 1 cp1255 ヘブライ語 1 cp1256 アラビア語 1 cp1257 バルト語 1 cp1258 ベトナム語 1 cp{number} MS-Windows: インストールされている任意のシングルバイトコードページ 2 cp932 日本語 (Windowsのみ) 2 euc-jp 日本語 2 sjis 日本語 2 cp949 韓国語 2 euc-kr 韓国語 2 cp936 簡体字中国語 (Windowsのみ) 2 euc-cn 簡体字中国語 2 cp950 繁体字中国語 (big5のエイリアス) 2 big5 繁体字中国語 (cp950のエイリアス) 2 euc-tw 繁体字中国語 2 2byte-{name} 任意のダブルバイトエンコーディング (Vim固有の名前) 2 cp{number} MS-Windows: インストールされている任意のダブルバイトコードページ u utf-8 32ビット UTF-8エンコードUnicode (ISO/IEC 10646-1) u ucs-2 16ビット UCS-2エンコードUnicode (ISO/IEC 10646-1) u ucs-2le ucs-2と同様、リトルエンディアン u utf-16 ucs-2を拡張し、より多くの文字を扱うためにダブルワードを使用 u utf-16le utf-16と同様、リトルエンディアン u ucs-4 32ビット UCS-4エンコードUnicode (ISO/IEC 10646-1) u ucs-4le ucs-4と同様、リトルエンディアン
{name}
は、システムがサポートする任意のエンコーディング名です。 UTF-8とファイルのエンコーディング間の変換にiconv()に渡されます。 MS-Windowsでは "cp{number}" はコードページ
{number}
を使用することを意味します。 例
:set fileencoding=8bit-cp1252
:set fileencoding=2byte-cp932
MS-Windowsのコードページ1252はlatin1と非常によく似ています。 実際的な理由から、同じエンコーディングが使用され、latin1と呼ばれます。
'isprint' を使用すると、文字0x80 - 0xA0を表示するかどうかを制御できます。
いくつかのエイリアスを使用できます。これらは上記のいずれかの名前に変換されます。 不完全なリスト
1 ansi latin1と同じ (廃止、後方互換性のため) 2 japan 日本語: "euc-jp" 2 korea 韓国語: "euc-kr" 2 prc 簡体字中国語: "euc-cn" 2 chinese "prc"と同じ 2 taiwan 繁体字中国語: "euc-tw" u utf8 utf-8と同じ u unicode ucs-2と同じ u ucs2be ucs-2と同じ (ビッグエンディアン) u ucs-2be ucs-2と同じ (ビッグエンディアン) u ucs-4be ucs-4と同じ (ビッグエンディアン) u utf-32 ucs-4と同じ u utf-32le ucs-4leと同じ default 現在のロケールのエンコーディング。
UCSコードでは、バイトオーダーが重要です。 これは扱いが難しいので、可能な限りUTF-8を使用してください。 デフォルトはビッグエンディアン(最上位バイトが最初に来る)です
名前 バイト 文字
ucs-2 11 22 1122 ucs-2le 22 11 1122 ucs-4 11 22 33 44 11223344 ucs-4le 44 33 22 11 11223344
MS-Windowsシステムでは、リトルエンディアンUCS-2を使用するため、"ucs-2le"を使用することがよくあります。
似ているが、まったく同じではないエンコーディングがいくつかあります。 Vimは、必要に応じて変換が行われるように、それらを異なるエンコーディングとして扱います。 変換を回避するため、または変換が不可能な場合は、同様の名前を使用することをお勧めします
cp932, shift-jis, sjis cp936, euc-cn
Vimは、いくつかの場所で自動的にエンコーディングを別のエンコーディングに変換します
メッセージを表示するとき、LC_MESSAGESに使用されるエンコーディングが "utf-8"と異なる場合 (これをサポートするgettextバージョンが必要です)。
マルチバイト変換 "utf-8"以外のエンコーディングでファイルを読み書きする場合、変換を行う必要があります。 これらの変換がサポートされています
Latin-1 (ISO-8859-1)、UTF-8、UCS-2、UCS-4間のすべての変換は内部的に処理されます。
MS-Windowsの場合、任意のコードページとの間の変換が機能するはずです。
iconvライブラリが利用可能な場合、iconvライブラリを使用した変換。 古いバージョンのGNU iconv()は、変換の失敗を引き起こす可能性があります (非常に大きなバッファを要求し、Vimが提供できるよりも大きくなります)。 別のiconv()実装を入手してみてください。
キーボードがテキストに入力したい文字を生成しない場合は、
'keymap' オプションを使用できます。 これにより、1つ以上の(英語の)文字が別の(英語以外の)文字に変換されます。 これは、Vimコマンドを入力しているときではなく、テキストを入力しているときにのみ発生します。 これにより、2つのキーボード設定を切り替える必要がなくなります。
'keymap' オプションの値は、使用するキーマップファイルを指定します。 このファイルの名前は、次の2つのいずれかです
keymap/{keymap}_utf-8.vim keymap/{keymap}.vim
ここで、
{keymap}
は
'keymap' オプションの値です。 "utf-8"を含むファイル名が最初に試行されます。
'runtimepath' は、これらのファイルを見つけるために使用されます。 利用可能なすべてのキーマップファイルの概要を表示するには、次を使用します
:echo globpath(&rtp, "keymap/*.vim")
挿入モードとコマンドラインモードでは、
CTRL-^
を使用してキーボードマップを使用するかどうかを切り替えることができます。
i_CTRL-^ c_CTRL-^ このフラグは、
'iminsert' オプションを使用して挿入モードで記憶されます。 挿入モードを終了して入力すると、以前の値が使用されます。
f や
r のような単一文字の引数を取るコマンドにも同じ値が使用されます。 コマンドラインモードでは、フラグは記憶されません。 まずASCIIであるExコマンドを入力する必要があります。 検索パターンを入力するには、
'imsearch' オプションが使用されます。
'iminsert' と同じ値を使用するように設定できます。
lCursor言語マッピングが使用されている場合、GUIカーソルに別の色を付けることができます。 これはデフォルトで無効になっています。これは、標準ではない背景色を使用するとカーソルが見えなくなるのを防ぐためです。 明るい色のカーソルを使用する例を次に示します
:highlight Cursor guifg=NONE guibg=Green
:highlight lCursor guifg=NONE guibg=Cyan
キーマップファイル形式 :loadk :loadkeymap E105 E791 キーマップファイルは次のようになります
" 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"にマッピングされています。 したがって、最初の項目は2番目の項目にマップされます。 これは、ファイルの終わりまで、行ごとに実行されます。 これらの項目は、
:lmap コマンドで使用できるものとまったく同じで、"<buffer>"を使用してマッピングをバッファに対してローカルにします。 結果はこのコマンドで確認できます
:lmap
2つの項目は空白で区切る必要があります。 項目内に空白を含めることはできません。代わりに、特殊な名前 "<Tab>"と "<Space>"を使用してください。 2つの項目の長さの合計は200バイトを超えてはなりません。
最初の列に複数の文字を含めることができます。 これはデッドキーのように機能します。 例
'a á
Vimは引用符の後の次の文字が本当に "a"かどうかを知らないため、次の文字を待ちます。 単一引用符を挿入できるようにするには、次の行も追加します
'' '
マッピングは
:lmap で定義されているため、結果の引用符は
'keymap' で定義されている別の文字の開始には使用されません。 標準の
:imap マッピングで使用できます。 "accents"キーマップはこれを使用します。
keymap-accents
最初の列は
<> 形式にすることもできます。
<C-c>
Ctrl-C
<A-c>
Alt-c
<A-C>
Alt-C Altマッピングは、キーボードと端末によっては機能しない場合があります。
2番目の列に複数の文字を含めることはできますが、これは珍しいことです。 しかし、文字を指定するにはさまざまな方法を使用できます
A a literal character
A <char-97> decimal value
A <char-0x61> hexadecimal value
A <char-0141> octal value
x <Space> special key name
文字はUTF-8でエンコードされていると想定されています。 すべての文字が文字通りに指定されている場合は、":scriptencoding"を使用できます。
<char->
コンストラクトを使用している場合は、変換が結果の文字ではなくキーマップファイルに対して行われるため、これは機能しません。
"loadkeymap"の後の行は、
'cpoptions' が "C"に設定されて解釈されます。 これは、継続行が使用されず、バックスラッシュがマッピングで特別な意味を持つことを意味します。 例
" a comment line
\" x maps " to x
\\ y maps \ to y
他の人にとって役に立つキーマップファイルを作成する場合は、配布に含めるためにVimメンテナに送信することを検討してください: <
[email protected]>
このファイルでは、UTF-8エンコーディングとCP1255エンコーディングで使用可能な文字、およびそれらの文字を取得するためのキーマップについて説明します
グリフ エンコーディング キーマップ
文字 UTF-8 cp1255 hebrew hebrewp 名前
א 0x5d0 0xe0 t a アレフ ב 0x5d1 0xe1 c b ベット ג 0x5d2 0xe2 d g ギメル ד 0x5d3 0xe3 s d ダレット ה 0x5d4 0xe4 v h ヘー ו 0x5d5 0xe5 u v ヴァヴ ז 0x5d6 0xe6 z zザイン ח 0x5d7 0xe7 j j ヘット ט 0x5d8 0xe8 y T テット י 0x5d9 0xe9 h y ヨッド ך 0x5da 0xea l K カーフソフィート כ 0x5db 0xeb f k カーフ ל 0x5dc 0xec k l ラメッド ם 0x5dd 0xed o M メムソフィート מ 0x5de 0xee n m メム ן 0x5df 0xef i N ヌンソフィート נ 0x5e0 0xf0 b n ヌン ס 0x5e1 0xf1 x s サメフ ע 0x5e2 0xf2 g アイン ף 0x5e3 0xf3 ; P ペーソフィート פ 0x5e4 0xf4 p p ペー ץ 0x5e5 0xf5 . X ツァディーソフィート צ 0x5e6 0xf6 m x ツァディー ק 0x5e7 0xf7 e q コフ ר 0x5e8 0xf8 r r レーシュ ש 0x5e9 0xf9 a w シン ת 0x5ea 0xfa , t タヴ
母音記号と特殊句読点: הְ 0x5b0 0xc0 A: A: sheva ヘְ 0x5b1 0xc1 HE HE hataf segol ヘֲ 0x5b2 0xc2 HA HA hataf patah ヘֳ 0x5b3 0xc3 HO HO hataf qamats ヘִ 0x5b4 0xc4 I I hiriq ヘֵ 0x5b5 0xc5 AY AY tsere ヘֶ 0x5b6 0xc6 E E segol ヘַ 0x5b7 0xc7 AA AA patah ヘָ 0x5b8 0xc8 AO AO qamats ヘֹ 0x5b9 0xc9 O O holam ヘֻ 0x5bb 0xcb U U qubuts כּ 0x5bc 0xcc D D dagesh ヘֽ 0x5bd 0xcd ]T ]T meteg ヘ־ 0x5be 0xce ]Q ]Q maqaf בֿ 0x5bf 0xcf ]R ]R rafe ב׀ 0x5c0 0xd0 ]p ]p paseq שׁ 0x5c1 0xd1 SR SR shin-dot שׂ 0x5c2 0xd2 SL SL sin-dot ׃ 0x5c3 0xd3 ]P ]P sof-pasuq װ 0x5f0 0xd4 VV VV double-vav ױ 0x5f1 0xd5 VY VY vav-yod ײ 0x5f2 0xd6 YY YY yod-yod
以下はUTF-8でのみ利用可能です。
詠唱記号: glyph Char UTF-8 ヘブライ語名 ב֑ 0x591 C: etnahta ב֒ 0x592 Cs segol ב֓ 0x593 CS shalshelet ב֔ 0x594 Cz zaqef qatan ב֕ 0x595 CZ zaqef gadol ב֖ 0x596 Ct tipeha ב֗ 0x597 Cr revia ב֘ 0x598 Cq zarqa ב֙ 0x599 Cp pashta ב֚ 0x59a C! yetiv ב֛ 0x59b Cv tevir ב֜ 0x59c Cg geresh ב֝ 0x59d C* geresh qadim ב֞ 0x59e CG gershayim ב֟ 0x59f CP qarnei-parah ב֪ 0x5aa Cy yerach-ben-yomo ב֫ 0x5ab Co ole ב֬ 0x5ac Ci iluy ב֭ 0x5ad Cd dehi ב֮ 0x5ae Cn zinor ב֯ 0x5af CC masora circle
結合形式: ﬠ 0xfb20 X` Alternative ayin ﬡ 0xfb21 X' Alternative ´alef ﬢ 0xfb22 X-d Alternative dalet ﬣ 0xfb23 X-h Alternative he ﬤ 0xfb24 X-k Alternative kaf ﬥ 0xfb25 X-l Alternative lamed ﬦ 0xfb26 X-m Alternative mem-sofit ﬧ 0xfb27 X-r Alternative resh ﬨ 0xfb28 X-t Alternative tav ﬩ 0xfb29 X-+ Alternative plus שׁ 0xfb2a XW shin+shin-dot שׂ 0xfb2b Xw shin+sin-dot שּׁ 0xfb2c X..W shin+shin-dot+dagesh שּׂ 0xfb2d X..w shin+sin-dot+dagesh אַ 0xfb2e XA alef+patah אָ 0xfb2f XO alef+qamats אּ 0xfb30 XI alef+hiriq (mapiq) בּ 0xfb31 X.b bet+dagesh גּ 0xfb32 X.g gimel+dagesh דּ 0xfb33 X.d dalet+dagesh הּ 0xfb34 X.h he+dagesh וּ 0xfb35 Xu vav+dagesh זּ 0xfb36 X.z zayin+dagesh טּ 0xfb38 X.T tet+dagesh יּ 0xfb39 X.y yud+dagesh ךּ 0xfb3a X.K kaf sofit+dagesh כּ 0xfb3b X.k kaf+dagesh לּ 0xfb3c X.l lamed+dagesh מּ 0xfb3e X.m mem+dagesh נּ 0xfb40 X.n nun+dagesh סּ 0xfb41 X.s samech+dagesh ףּ 0xfb43 X.P pe sofit+dagesh פּ 0xfb44 X.p pe+dagesh צּ 0xfb46 X.x tsadi+dagesh קּ 0xfb47 X.q qof+dagesh רּ 0xfb48 X.r resh+dagesh שּ 0xfb49 X.w shin+dagesh תּ 0xfb4a X.t tav+dagesh וֹ 0xfb4b Xo vav+holam בֿ 0xfb4c XRb bet+rafe כֿ 0xfb4d XRk kaf+rafe פֿ 0xfb4e XRp pe+rafe ﭏ 0xfb4f Xal alef-lamed
Unicode unicode Unicode文字セットは、他の文字セットのすべての文字を含むように設計されました。そのため、Unicodeを使用すると、あらゆる言語でテキストを書くことができます(めったに使用されない言語はいくつか除外されます)。また、これらの言語を1つのファイルに混在させることがほとんど可能ですが、これは他のエンコーディングでは不可能です。
Unicodeはいくつかの方法でエンコードできます。最も一般的なのはUTF-8で、各文字に1つ以上のバイトを使用し、ASCIIとの下位互換性があります。MS-Windowsでは、16ビットワードを使用するUTF-16(以前はUCS-2)も使用されます。Vimはこれらのエンコーディングをすべてサポートできますが、内部的には常にUTF-8を使用します。
VimはUTF-8を包括的にサポートしています。以下の環境でうまく機能します。
UTF-8サポートが有効になっているxterm
MS-Windows GUI
その他のいくつかのプラットフォーム
BOMバイト ファイルを読み込む場合、BOM(バイトオーダーマーク)を使用してUnicodeエンコーディングを認識できます。EF BB BF UTF-8 FE FF UTF-16 ビッグエンディアン FF FE UTF-16 リトルエンディアン 00 00 FE FF UTF-32 ビッグエンディアン FF FE 00 00 UTF-32 リトルエンディアン
推奨されるエンコーディングはUTF-8です。UTF-16とUTF-32を区別するのは難しいことに注意してください。UTF-16はMS-Windowsでよく使用されますが、UTF-32はファイル形式としては広く普及していません。
Nvimは、Unicode標準のUAX#29における拡張書記素クラスタの定義に、いくつかの変更を加えて weitgehend 準拠しています。ASCII文字は常に新しいクラスタを開始します。さらに、
'arabicshape'を有効にすると、いくつかのアラビア文字が単一のセルにまとめて表示されるように整形された場合に、それらを結合できます。
大きすぎる結合文字は表示できませんが、以下で説明する
g8および
gaコマンドを使用して検査できます。テキストを編集する場合、合成文字はほとんどの場合、前の文字の一部と見なされます。たとえば、「x」はデフォルトで文字とその後の合成文字を削除します。
'delcombine'オプションがオンの場合、「x」を押すと、結合文字が1つずつ削除され、次に基本文字が削除されます。ただし、挿入するときは、最初の文字とその後の合成文字を別々に、その後結合されます。「r」コマンドでは結合文字を入力できません。これは、結合文字が来るかどうかがわからないためです。代わりに「R」を使用してください。
有効なUTF-8バイトシーケンスの一部ではないバイトは、単一の文字として扱われ、<xx>
として表示されます。ここで、「xx」はバイトの16進値です。
過剰な長さのシーケンスは特別に処理されず、有効な文字のように表示されます。ただし、検索パターンは過剰な長さのシーケンスと一致しない場合があります。(過剰な長さのシーケンスとは、文字に必要なバイト数よりも多くのバイトが使用されているシーケンスです。)例外はNUL(ゼロ)で、"<00>"として表示されます。
ファイルとバッファでは、Unicode文字の全範囲(31ビット)を使用できます。ただし、表示は選択したフォントに存在する文字に対してのみ機能します。
便利なコマンド
「ga」は、カーソル下の文字の10進値、16進値、および8進値を表示します。合成文字がある場合、それらも表示されます。(メッセージが切り捨てられている場合は、「:messages」を使用してください)。
「g8」は、UTF-8文字で使用されているバイトと、合成文字を16進数で表示します。
「:set fileencodings =」は、すべてのファイルにUTF-8を使用するように強制します。デフォルトでは、ファイルのエンコーディングが自動的に検出されます。
Vimの起動
メニューに使用されるフォントを選択したい場合があります。残念ながら、これは常に機能するとは限りません。以下のシステム固有の注意事項と、
'langmenu'を参照してください。
使用するフォントを指定する必要があります。全角文字には、ちょうど2倍の幅の別のフォントが必要です。これを行うには3つの方法があります。
詳細については、各オプションのドキュメントを参照してください。例:
:set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
メニューに使用されるフォントも設定したい場合があります。これはMotifでのみ機能します。これには、「:hi Menu font = {fontname}」コマンドを使用します。
:highlight
X Window Systemを使用している場合は、以下をサポートする入力メソッドを見つける必要があります。
UTF-8。
システムがUTF-8の入力をサポートしていない場合は、
'keymap'機能を使用できます。これにより、UTF-8文字をASCII文字のシーケンスとして定義するキーマップファイルを作成できます。
mbyte-keymapを参照してください。
他のすべてが失敗した場合、4つの16進バイトとして任意の文字を入力できます。
CTRL-V u 1234
「\ u1234」は16進数として解釈されます。4文字を入力する必要があります。必要に応じてゼロを前に付けてください。
f、
F、
t、
rなどのコマンドは、1文字の引数を取ります。UTF-8の場合、この引数には1つまたは2つの合成文字が含まれる場合があります。これらは基本文字と一緒に生成する必要があります。Vimは、次の文字が入力されるのを待って、それが合成文字かどうかを判断しません。
'keymap'または
:lmapを使用すると、これらの文字を入力するのに便利です。
行内の文字を検索するコマンドは、合成文字を次のように処理します。合成文字のない文字を検索する場合、テキスト内で合成文字の有無にかかわらず一致するものが見つかります。合成文字のある文字を検索する場合、その合成文字と一致するもののみが見つかります。誰もが合成文字を入力できるわけではないため、このように実装されました。
これらのオプションは、マルチバイトファイルを編集する際に関連します。
'fileencoding' ファイルのエンコーディング。「utf-8」とは異なる場合、ファイルの読み取りまたは書き込み時に変換が行われます。
'formatoptions' 'm'フラグを含めると、フォーマットによって256以上のマルチバイト文字で行が分割されます。これは、文字のシーケンスをどこでも分割できる言語に役立ちます。