Mbyte
Nvim 的 :help
頁面,由 產生 自 原始碼,使用 tree-sitter-vimdoc 解析器。
多位元組支援
multi-byte 中文 日文 韓文 這是關於編輯那些無法使用單一位元組(一個八位元)表示的多種字元的語言文字。例如中文、日文和韓文。這裡也涵蓋了 Unicode。
這是 Vim 中多位元組功能的摘要。如果你幸運的話,它會如描述般運作,你可以開始使用 Vim 而無需太多麻煩。如果某些功能無法運作,你將需要閱讀其餘部分。如果需要相當多的工作和實驗才能使 Vim 使用所有多位元組功能,請不要感到驚訝。不幸的是,每個系統都有自己處理多位元組語言的方式,而且非常複雜。
LOCALE(語系)
首先,你必須確保你目前的語系設定正確。如果你的系統已安裝為使用該語言,則它可能會立即運作。如果沒有,你通常可以透過在 shell 中設定 $LANG 環境變數來使其運作
setenv LANG ja_JP.EUC
不幸的是,語系的名稱取決於你的系統。日文也可能被稱為「ja_JP.EUCjp」或僅僅是「ja」。要查看目前使用的語系
:language
若要在 Vim 內變更語系,請使用
:language ja_JP.EUC
如果此操作不起作用,Vim 會給出錯誤訊息。這是一個很好的實驗方法,可以找到你要使用的語系名稱。但最好還是在 shell 中設定語系,以便它從一開始就使用。
ENCODING(編碼)
Nvim 內部始終使用 UTF-8。因此
'encoding' 選項始終設定為「utf-8」,且無法變更。
在 Vim 內部使用的所有文字都將為 UTF-8。不僅是緩衝區中的文字,也包括暫存器、變數等。
DISPLAY AND FONTS(顯示和字型)
如果你在終端機(模擬器)中工作,則必須確保它接受 UTF-8,這是 Vim 使用的編碼。否則,只能正確顯示和編輯 ASCII。
有幾種方式可以輸入多位元組字元
可以使用你的系統輸入法 (IME)。
最簡單的設定是當你的整個系統都使用你要工作的語系時。但也可以為你正在使用的 shell 設定語系,或僅在 Vim 內部使用特定的語系。
世界上有很多語言。而且至少有和語言數量一樣多的不同文化和環境。對應於一個區域的語言環境稱為「語系」。這包括有關所用語言、字元集、排序的整理順序、日期格式、貨幣格式等資訊。對於 Vim,只有語言和字元集才真正重要。
只有在你的系統支援語系時,才能使用語系。某些系統只有少數幾個語系,尤其是在美國。你想要使用的語言可能不在你的系統上。在這種情況下,你或許可以將其安裝為額外的套件。請查看你的系統文件,以了解如何執行此操作。
安裝語系的位置因系統而異。例如,「/usr/share/locale」或「/usr/lib/locale」。請參閱你的系統 setlocale() 手冊頁。
查看這些目錄將向你顯示每個語系的確切名稱。大多數情況下,大小寫很重要,因此「ja_JP.EUC」和「ja_jp.euc」是不同的。某些系統具有 locale.alias 檔案,可將短名稱(例如「nl」)翻譯為全名「nl_NL.ISO_8859-1」。
請注意,X-windows 有其自己的語系設定。但不幸的是,它使用的語系名稱與其他地方使用的不同。這令人困惑!對於 Vim,重要的是 setlocale() 函數使用的內容,通常不是 X-windows 的設定。你可能需要進行一些實驗才能找出真正有效的方法。
語言 或 語言_地區 或 語言_地區.字元集
地區表示國家(或其一部分),字元集表示
字元集。例如,語系名稱「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」中的設定檔中設定它。
若要在 shell 中使用語系,請設定 $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}
你可以為此建立一個小型 shell 腳本。
在 Nvim 中,UTF-8 始終在內部用於編碼字元。這適用於所有使用文字的地方,包括緩衝區(載入到記憶體中的檔案)、暫存器和變數。
charset codeset 字元集是編碼的另一個名稱。存在細微的差異,但在使用 Vim 時這些差異並不重要。「codeset」是另一個類似的名稱。
每個字元都編碼為一個或多個位元組。當所有字元都以一個位元組編碼時,我們稱之為單一位元組編碼。最常用的稱為「latin1」。這將字元數限制為 256 個。其中一些是控制字元,因此可供文字使用的更少。
當某些字元使用兩個或多個位元組時,我們稱之為多位元組編碼。這樣可以使用超過 256 個字元,這對於大多數東亞語言是必需的。
大多數多位元組編碼都使用一個位元組表示前 127 個字元。這些等於 ASCII,這使得交換純 ASCII 文字變得容易,無論使用哪種語言。因此,即使編碼設定錯誤,你也可以看到正確的文字。
1 8bit 單一位元組編碼,256 個不同的字元。主要在美國和歐洲使用。範例:ISO-8859-1 (Latin1)。所有字元都只佔用一個螢幕儲存格。
2 2byte 雙位元組編碼,超過 10000 個不同的字元。主要在亞洲國家/地區使用。範例:euc-kr (韓文)。螢幕儲存格的數量等於位元組的數量(當第一個位元組為 0x8e 時的 euc-jp 除外)。
u Unicode 通用編碼,可以取代所有其他編碼。ISO 10646。數百萬個不同的字元。範例:UTF-8。位元組和螢幕儲存格之間的關係很複雜。
可辨識的
'fileencoding' 值包括:
encoding-values1 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}
可以是你的系統支援的任何編碼名稱。它會傳遞給 iconv(),以在 UTF-8 與檔案的編碼之間轉換。對於 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-2le",因為它使用小端序的 UCS-2 編碼。
有一些編碼很相似,但並不完全相同。Vim 會將它們視為不同的編碼,因此在需要時會進行轉換。您可能會想使用相似的名稱,以避免轉換或在無法轉換時使用。
cp932, shift-jis, sjis cp936, euc-cn
Vim 會在幾個地方自動從一種編碼轉換為另一種編碼。
當顯示訊息時,且用於 LC_MESSAGES 的編碼與 "utf-8" 不同時(需要支援此功能的 gettext 版本)。
mbyte-conversion 當以與 "utf-8" 不同的編碼讀取和寫入檔案時,需要進行轉換。支援以下轉換:
Latin-1 (ISO-8859-1)、UTF-8、UCS-2 和 UCS-4 之間的所有轉換都在內部處理。
對於 MS-Windows,從任何程式碼頁轉換到任何程式碼頁都應該可行。
使用 iconv 函式庫進行轉換,如果有的話。舊版本的 GNU iconv() 可能會導致轉換失敗(它們會請求非常大的緩衝區,超出 Vim 願意提供的範圍)。請嘗試取得其他 iconv() 實作。
當鍵盤無法產生您想要輸入到文字中的字元時,您可以使用
'keymap' 選項。這會將一個或多個(英文)字元轉換為另一個(非英文)字元。這只會在輸入文字時發生,而不會在輸入 Vim 命令時發生。這避免了在兩種鍵盤設定之間切換的需要。
'keymap' 選項的值指定要使用的鍵盤對應檔案。此檔案的名稱是以下兩者之一:
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。對於命令列模式,此標誌不會被記住。您需要先輸入一個 Ex 命令,該命令是 ASCII。對於輸入搜尋模式,會使用
'imsearch' 選項。可以將其設定為使用與
'iminsert' 相同的值。
lCursor當使用語言對應時,可以為 GUI 游標提供另一種顏色。預設會停用此功能,以避免在使用非標準背景顏色時游標變得不可見。以下是一個使用亮色游標的範例:
:highlight Cursor guifg=NONE guibg=Green
:highlight lCursor guifg=NONE guibg=Cyan
keymap-file-format :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"。因此,第一項會對應到第二項。這會對每一行執行,直到檔案結束。這些項目與
:lmap 命令中可使用的項目完全相同,使用 "<buffer>" 使對應僅限於緩衝區。您可以使用以下命令檢查結果:
:lmap
這兩項必須以空白分隔。您不能在項目內包含空白,請改用特殊名稱 "<Tab>" 和 "<Space>"。這兩項的長度加起來不得超過 200 個位元組。
第一欄可以有多個字元。這就像一個死鍵。範例:
'a á
由於 Vim 不知道引號後的下一個字元是否真的是 "a",它會等待下一個字元。為了能夠插入單引號,也請新增這一行:
'' '
由於對應是使用
:lmap 定義的,因此產生的引號不會用於
'keymap' 中定義的另一個字元的開頭。它可以用於標準的
:imap 對應。"accents" 鍵盤對應使用此功能。
keymap-accents
第一欄也可以使用
<> 形式:
<C-c>
Ctrl-C
<A-c>
Alt-c
<A-C>
Alt-C。請注意,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
假設字元是以 UTF-8 編碼的。當所有字元都是逐字給定時,可以使用 ":scriptencoding"。當使用
<char->
建構時,這不起作用,因為轉換是在鍵盤對應檔案上進行,而不是在產生的字元上進行。
"loadkeymap" 後面的行會使用設定為 "C" 的
'cpoptions' 進行解譯。這表示不會使用接續行,並且反斜線在對應中具有特殊含義。範例:
" 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 ´alef ב 0x5d1 0xe1 c b bet ג 0x5d2 0xe2 d g gimel ד 0x5d3 0xe3 s d dalet ה 0x5d4 0xe4 v h he ו 0x5d5 0xe5 u v vav ז 0x5d6 0xe6 z z zayin ח 0x5d7 0xe7 j j het ט 0x5d8 0xe8 y T tet י 0x5d9 0xe9 h y yod ך 0x5da 0xea l K kaf sofit כ 0x5db 0xeb f k kaf ל 0x5dc 0xec k l lamed ם 0x5dd 0xed o M mem sofit מ 0x5de 0xee n m mem ן 0x5df 0xef i N nun sofit נ 0x5e0 0xf0 b n nun ס 0x5e1 0xf1 x s samech ע 0x5e2 0xf2 g uayin ף 0x5e3 0xf3 ; P pe sofit פ 0x5e4 0xf4 p p pe ץ 0x5e5 0xf5 . X tsadi sofit צ 0x5e6 0xf6 m x tsadi ק 0x5e7 0xf7 e q qof ר 0x5e8 0xf8 r r resh ש 0x5e9 0xf9 a w shin ת 0x5ea 0xfa , t tav
母音符號和特殊標點符號:הְ 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 中可用:
誦經符號:字形 字元 UTF-8 hebrew 名稱 ב֑ 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` Alternativeayin ﬡ 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 編寫任何語言的文字(排除一些很少使用的語言)。而且,大部分情況下可以在一個檔案中混合這些語言,這在其他編碼中是不可能的。
Unicode 可以用多種方式編碼。最流行的是 UTF-8,它為每個字元使用一個或多個位元組,並且向下相容於 ASCII。在 MS-Windows 上也使用 UTF-16(以前稱為 UCS-2),它使用 16 位元的字。Vim 可以支援所有這些編碼,但內部始終使用 UTF-8。
Vim 具有全面的 UTF-8 支援。它在以下環境中運作良好:
啟用 UTF-8 支援的 xterm
MS-Windows GUI
其他數個平台
bom-bytes 讀取檔案時,可以使用 BOM (Byte Order Mark) 來識別 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 的擴展字素簇定義,並做了一些修改:ASCII 字元始終會開始一個新的簇。此外,
'arabicshape' 會啟用一些阿拉伯字母的組合,當它們被塑造成在單個儲存格中一起顯示時。
太大的組合字元無法顯示,但仍然可以使用下面描述的
g8 和
ga 命令來檢查它們。編輯文字時,組合字元大多被視為前一個字元的一部分。例如,預設情況下,"x" 會刪除一個字元及其後面的組合字元。如果
'delcombine' 選項開啟,則按 'x' 會一次刪除一個組合字元,然後刪除基礎字元。但是當插入時,您會分別輸入第一個字元和後面的組合字元,之後它們會被合併。"r" 命令不允許您輸入組合字元,因為它不知道接下來會出現組合字元。請改用 "R"。
不屬於有效 UTF-8 位元組序列的位元組會被視為單個字元處理,並顯示為 <xx>
,其中 "xx" 是位元組的十六進位值。
過長的序列不會被特殊處理,並會像有效的字元一樣顯示。但是,搜尋模式可能無法匹配過長的序列。(過長的序列是指使用比字元所需更多的位元組。)例外情況是 NUL(零),它會顯示為 "<00>"。
在檔案和緩衝區中,可以使用完整的 Unicode 字元範圍(31 位元)。但是,顯示僅適用於選定字體中存在的字元。
實用命令
"ga" 會顯示游標下字元的十進位、十六進位和八進位值。如果存在組合字元,也會顯示出來。(如果訊息被截斷,請使用 ":messages")。
"g8" 會以十六進位數字顯示 UTF-8 字元中使用的位元組,以及組合字元。
":set fileencodings=" 會強制所有檔案使用 UTF-8。預設值是自動偵測檔案的編碼。
啟動 VIM
您可能需要選擇用於選單的字體。不幸的是,這並非總是有效。請參閱下面的系統特定註解和
'langmenu'。
您需要指定要使用的字體。對於雙倍寬度的字元,需要另一個字體,其寬度正好是兩倍。有三種方法可以做到這一點:
請參閱每個選項的說明以了解詳細資訊。範例:
:set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
您可能還想設定用於選單的字體。這僅適用於 Motif。請使用 ":hi Menu font={fontname}" 命令。
:highlight
如果您正在使用 X-Windows,您應該找到一個支援
UTF-8 的輸入法。
如果您的系統不提供輸入 UTF-8 的支援,您可以使用
'keymap' 功能。這允許編寫一個按鍵對應檔案,該檔案將 UTF-8 字元定義為 ASCII 字元的序列。請參閱
mbyte-keymap。
如果所有其他方法都失敗,您可以將任何字元輸入為四個十六進位位元組:
CTRL-V u 1234
"1234" 會被解讀為十六進位數字。您必須輸入四個字元,如果需要請在前面加上零。
諸如
f、
F、
t 和
r 之類的命令接受一個字元的引數。對於 UTF-8,此引數可以包含一或兩個組合字元。這些字元需要與基礎字元一起產生,Vim 不會等待下一個輸入的字元,以判斷它是否是組合字元。使用
'keymap' 或
:lmap 是輸入這些字元的好方法。
在一行中搜尋字元的命令會按以下方式處理組合字元。當搜尋沒有組合字元的字元時,這會在帶有或不帶有組合字元的文字中找到匹配項。當搜尋帶有組合字元的字元時,這只會找到帶有該組合字元的匹配項。這種方式的實作是因為不是每個人都能輸入組合字元。
這些選項與編輯多位元組檔案有關。
'formatoptions' 可以包含 'm' 標記,以便在 256 或更高的多位元組字元處中斷換行。這對於可以在任何地方中斷字元序列的語言很有用。