1*mbyte.txt* For Vim version 8.1. Last change: 2019 Apr 28 2 3 4 VIM REFERENCE MANUAL by Bram Moolenaar et al. 5 6 7Multi-byte support *multibyte* *multi-byte* 8 *Chinese* *Japanese* *Korean* 9This is about editing text in languages which have many characters that can 10not be represented using one byte (one octet). Examples are Chinese, Japanese 11and Korean. Unicode is also covered here. 12 13For an introduction to the most common features, see |usr_45.txt| in the user 14manual. 15For changing the language of messages and menus see |mlang.txt|. 16 171. Getting started |mbyte-first| 182. Locale |mbyte-locale| 193. Encoding |mbyte-encoding| 204. Using a terminal |mbyte-terminal| 215. Fonts on X11 |mbyte-fonts-X11| 226. Fonts on MS-Windows |mbyte-fonts-MSwin| 237. Input on X11 |mbyte-XIM| 248. Input on MS-Windows |mbyte-IME| 259. Input with a keymap |mbyte-keymap| 2610. Input with imactivatefunc() |mbyte-func| 2711. Using UTF-8 |mbyte-utf8| 2812. Overview of options |mbyte-options| 29 30NOTE: This file contains UTF-8 characters. These may show up as strange 31characters or boxes when using another encoding. 32 33============================================================================== 341. Getting started *mbyte-first* 35 36This is a summary of the multibyte features in Vim. If you are lucky it works 37as described and you can start using Vim without much trouble. If something 38doesn't work you will have to read the rest. Don't be surprised if it takes 39quite a bit of work and experimenting to make Vim use all the multi-byte 40features. Unfortunately, every system has its own way to deal with multibyte 41languages and it is quite complicated. 42 43 44LOCALE 45 46First of all, you must make sure your current locale is set correctly. If 47your system has been installed to use the language, it probably works right 48away. If not, you can often make it work by setting the $LANG environment 49variable in your shell: > 50 51 setenv LANG ja_JP.EUC 52 53Unfortunately, the name of the locale depends on your system. Japanese might 54also be called "ja_JP.EUCjp" or just "ja". To see what is currently used: > 55 56 :language 57 58To change the locale inside Vim use: > 59 60 :language ja_JP.EUC 61 62Vim will give an error message if this doesn't work. This is a good way to 63experiment and find the locale name you want to use. But it's always better 64to set the locale in the shell, so that it is used right from the start. 65 66See |mbyte-locale| for details. 67 68 69ENCODING 70 71If your locale works properly, Vim will try to set the 'encoding' option 72accordingly. If this doesn't work you can overrule its value: > 73 74 :set encoding=utf-8 75 76See |encoding-values| for a list of acceptable values. 77 78The result is that all the text that is used inside Vim will be in this 79encoding. Not only the text in the buffers, but also in registers, variables, 80etc. This also means that changing the value of 'encoding' makes the existing 81text invalid! The text doesn't change, but it will be displayed wrong. 82 83You can edit files in another encoding than what 'encoding' is set to. Vim 84will convert the file when you read it and convert it back when you write it. 85See 'fileencoding', 'fileencodings' and |++enc|. 86 87 88DISPLAY AND FONTS 89 90If you are working in a terminal (emulator) you must make sure it accepts the 91same encoding as which Vim is working with. If this is not the case, you can 92use the 'termencoding' option to make Vim convert text automatically. 93 94For the GUI you must select fonts that work with the current 'encoding'. This 95is the difficult part. It depends on the system you are using, the locale and 96a few other things. See the chapters on fonts: |mbyte-fonts-X11| for 97X-Windows and |mbyte-fonts-MSwin| for MS-Windows. 98 99For GTK+ 2, you can skip most of this section. The option 'guifontset' does 100no longer exist. You only need to set 'guifont' and everything should "just 101work". If your system comes with Xft2 and fontconfig and the current font 102does not contain a certain glyph, a different font will be used automatically 103if available. The 'guifontwide' option is still supported but usually you do 104not need to set it. It is only necessary if the automatic font selection does 105not suit your needs. 106 107For X11 you can set the 'guifontset' option to a list of fonts that together 108cover the characters that are used. Example for Korean: > 109 110 :set guifontset=k12,r12 111 112Alternatively, you can set 'guifont' and 'guifontwide'. 'guifont' is used for 113the single-width characters, 'guifontwide' for the double-width characters. 114Thus the 'guifontwide' font must be exactly twice as wide as 'guifont'. 115Example for UTF-8: > 116 117 :set guifont=-misc-fixed-medium-r-normal-*-18-120-100-100-c-90-iso10646-1 118 :set guifontwide=-misc-fixed-medium-r-normal-*-18-120-100-100-c-180-iso10646-1 119 120You can also set 'guifont' alone, Vim will try to find a matching 121'guifontwide' for you. 122 123 124INPUT 125 126There are several ways to enter multi-byte characters: 127- For X11 XIM can be used. See |XIM|. 128- For MS-Windows IME can be used. See |IME|. 129- For all systems keymaps can be used. See |mbyte-keymap|. 130 131The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose 132the different input methods or disable them temporarily. 133 134============================================================================== 1352. Locale *mbyte-locale* 136 137The easiest setup is when your whole system uses the locale you want to work 138in. But it's also possible to set the locale for one shell you are working 139in, or just use a certain locale inside Vim. 140 141 142WHAT IS A LOCALE? *locale* 143 144There are many of languages in the world. And there are different cultures 145and environments at least as much as the number of languages. A linguistic 146environment corresponding to an area is called "locale". This includes 147information about the used language, the charset, collating order for sorting, 148date format, currency format and so on. For Vim only the language and charset 149really matter. 150 151You can only use a locale if your system has support for it. Some systems 152have only a few locales, especially in the USA. The language which you want 153to use may not be on your system. In that case you might be able to install 154it as an extra package. Check your system documentation for how to do that. 155 156The location in which the locales are installed varies from system to system. 157For example, "/usr/share/locale" or "/usr/lib/locale". See your system's 158setlocale() man page. 159 160Looking in these directories will show you the exact name of each locale. 161Mostly upper/lowercase matters, thus "ja_JP.EUC" and "ja_jp.euc" are 162different. Some systems have a locale.alias file, which allows translation 163from a short name like "nl" to the full name "nl_NL.ISO_8859-1". 164 165Note that X-windows has its own locale stuff. And unfortunately uses locale 166names different from what is used elsewhere. This is confusing! For Vim it 167matters what the setlocale() function uses, which is generally NOT the 168X-windows stuff. You might have to do some experiments to find out what 169really works. 170 171 *locale-name* 172The (simplified) format of |locale| name is: 173 174 language 175or language_territory 176or language_territory.codeset 177 178Territory means the country (or part of it), codeset means the |charset|. For 179example, the locale name "ja_JP.eucJP" means: 180 ja the language is Japanese 181 JP the country is Japan 182 eucJP the codeset is EUC-JP 183But it also could be "ja", "ja_JP.EUC", "ja_JP.ujis", etc. And unfortunately, 184the locale name for a specific language, territory and codeset is not unified 185and depends on your system. 186 187Examples of locale name: 188 charset language locale name ~ 189 GB2312 Chinese (simplified) zh_CN.EUC, zh_CN.GB2312 190 Big5 Chinese (traditional) zh_TW.BIG5, zh_TW.Big5 191 CNS-11643 Chinese (traditional) zh_TW 192 EUC-JP Japanese ja, ja_JP.EUC, ja_JP.ujis, ja_JP.eucJP 193 Shift_JIS Japanese ja_JP.SJIS, ja_JP.Shift_JIS 194 EUC-KR Korean ko, ko_KR.EUC 195 196 197USING A LOCALE 198 199To start using a locale for the whole system, see the documentation of your 200system. Mostly you need to set it in a configuration file in "/etc". 201 202To use a locale in a shell, set the $LANG environment value. When you want to 203use Korean and the |locale| name is "ko", do this: 204 205 sh: export LANG=ko 206 csh: setenv LANG ko 207 208You can put this in your ~/.profile or ~/.cshrc file to always use it. 209 210To use a locale in Vim only, use the |:language| command: > 211 212 :language ko 213 214Put this in your ~/.vimrc file to use it always. 215 216Or specify $LANG when starting Vim: 217 218 sh: LANG=ko vim {vim-arguments} 219 csh: env LANG=ko vim {vim-arguments} 220 221You could make a small shell script for this. 222 223============================================================================== 2243. Encoding *mbyte-encoding* 225 226Vim uses the 'encoding' option to specify how characters are identified and 227encoded when they are used inside Vim. This applies to all the places where 228text is used, including buffers (files loaded into memory), registers and 229variables. 230 231 *charset* *codeset* 232Charset is another name for encoding. There are subtle differences, but these 233don't matter when using Vim. "codeset" is another similar name. 234 235Each character is encoded as one or more bytes. When all characters are 236encoded with one byte, we call this a single-byte encoding. The most often 237used one is called "latin1". This limits the number of characters to 256. 238Some of these are control characters, thus even fewer can be used for text. 239 240When some characters use two or more bytes, we call this a multi-byte 241encoding. This allows using much more than 256 characters, which is required 242for most East Asian languages. 243 244Most multi-byte encodings use one byte for the first 127 characters. These 245are equal to ASCII, which makes it easy to exchange plain-ASCII text, no 246matter what language is used. Thus you might see the right text even when the 247encoding was set wrong. 248 249 *encoding-names* 250Vim can use many different character encodings. There are three major groups: 251 2521 8bit Single-byte encodings, 256 different characters. Mostly used 253 in USA and Europe. Example: ISO-8859-1 (Latin1). All 254 characters occupy one screen cell only. 255 2562 2byte Double-byte encodings, over 10000 different characters. 257 Mostly used in Asian countries. Example: euc-kr (Korean) 258 The number of screen cells is equal to the number of bytes 259 (except for euc-jp when the first byte is 0x8e). 260 261u Unicode Universal encoding, can replace all others. ISO 10646. 262 Millions of different characters. Example: UTF-8. The 263 relation between bytes and screen cells is complex. 264 265Other encodings cannot be used by Vim internally. But files in other 266encodings can be edited by using conversion, see 'fileencoding'. 267Note that all encodings must use ASCII for the characters up to 128 (except 268when compiled for EBCDIC). 269 270Supported 'encoding' values are: *encoding-values* 2711 latin1 8-bit characters (ISO 8859-1, also used for cp1252) 2721 iso-8859-n ISO_8859 variant (n = 2 to 15) 2731 koi8-r Russian 2741 koi8-u Ukrainian 2751 macroman MacRoman (Macintosh encoding) 2761 8bit-{name} any 8-bit encoding (Vim specific name) 2771 cp437 similar to iso-8859-1 2781 cp737 similar to iso-8859-7 2791 cp775 Baltic 2801 cp850 similar to iso-8859-4 2811 cp852 similar to iso-8859-1 2821 cp855 similar to iso-8859-2 2831 cp857 similar to iso-8859-5 2841 cp860 similar to iso-8859-9 2851 cp861 similar to iso-8859-1 2861 cp862 similar to iso-8859-1 2871 cp863 similar to iso-8859-8 2881 cp865 similar to iso-8859-1 2891 cp866 similar to iso-8859-5 2901 cp869 similar to iso-8859-7 2911 cp874 Thai 2921 cp1250 Czech, Polish, etc. 2931 cp1251 Cyrillic 2941 cp1253 Greek 2951 cp1254 Turkish 2961 cp1255 Hebrew 2971 cp1256 Arabic 2981 cp1257 Baltic 2991 cp1258 Vietnamese 3001 cp{number} MS-Windows: any installed single-byte codepage 3012 cp932 Japanese (Windows only) 3022 euc-jp Japanese (Unix only) 3032 sjis Japanese (Unix only) 3042 cp949 Korean (Unix and Windows) 3052 euc-kr Korean (Unix only) 3062 cp936 simplified Chinese (Windows only) 3072 euc-cn simplified Chinese (Unix only) 3082 cp950 traditional Chinese (on Unix alias for big5) 3092 big5 traditional Chinese (on Windows alias for cp950) 3102 euc-tw traditional Chinese (Unix only) 3112 2byte-{name} Unix: any double-byte encoding (Vim specific name) 3122 cp{number} MS-Windows: any installed double-byte codepage 313u utf-8 32 bit UTF-8 encoded Unicode (ISO/IEC 10646-1) 314u ucs-2 16 bit UCS-2 encoded Unicode (ISO/IEC 10646-1) 315u ucs-2le like ucs-2, little endian 316u utf-16 ucs-2 extended with double-words for more characters 317u utf-16le like utf-16, little endian 318u ucs-4 32 bit UCS-4 encoded Unicode (ISO/IEC 10646-1) 319u ucs-4le like ucs-4, little endian 320 321The {name} can be any encoding name that your system supports. It is passed 322to iconv() to convert between the encoding of the file and the current locale. 323For MS-Windows "cp{number}" means using codepage {number}. 324Examples: > 325 :set encoding=8bit-cp1252 326 :set encoding=2byte-cp932 327 328The MS-Windows codepage 1252 is very similar to latin1. For practical reasons 329the same encoding is used and it's called latin1. 'isprint' can be used to 330display the characters 0x80 - 0xA0 or not. 331 332Several aliases can be used, they are translated to one of the names above. 333An incomplete list: 334 3351 ansi same as latin1 (obsolete, for backward compatibility) 3362 japan Japanese: on Unix "euc-jp", on MS-Windows cp932 3372 korea Korean: on Unix "euc-kr", on MS-Windows cp949 3382 prc simplified Chinese: on Unix "euc-cn", on MS-Windows cp936 3392 chinese same as "prc" 3402 taiwan traditional Chinese: on Unix "euc-tw", on MS-Windows cp950 341u utf8 same as utf-8 342u unicode same as ucs-2 343u ucs2be same as ucs-2 (big endian) 344u ucs-2be same as ucs-2 (big endian) 345u ucs-4be same as ucs-4 (big endian) 346u utf-32 same as ucs-4 347u utf-32le same as ucs-4le 348 default stands for the default value of 'encoding', depends on the 349 environment 350 351For the UCS codes the byte order matters. This is tricky, use UTF-8 whenever 352you can. The default is to use big-endian (most significant byte comes 353first): 354 name bytes char ~ 355 ucs-2 11 22 1122 356 ucs-2le 22 11 1122 357 ucs-4 11 22 33 44 11223344 358 ucs-4le 44 33 22 11 11223344 359 360On MS-Windows systems you often want to use "ucs-2le", because it uses little 361endian UCS-2. 362 363There are a few encodings which are similar, but not exactly the same. Vim 364treats them as if they were different encodings, so that conversion will be 365done when needed. You might want to use the similar name to avoid conversion 366or when conversion is not possible: 367 368 cp932, shift-jis, sjis 369 cp936, euc-cn 370 371 *encoding-table* 372Normally 'encoding' is equal to your current locale and 'termencoding' is 373empty. This means that your keyboard and display work with characters encoded 374in your current locale, and Vim uses the same characters internally. 375 376You can make Vim use characters in a different encoding by setting the 377'encoding' option to a different value. Since the keyboard and display still 378use the current locale, conversion needs to be done. The 'termencoding' then 379takes over the value of the current locale, so Vim converts between 'encoding' 380and 'termencoding'. Example: > 381 :let &termencoding = &encoding 382 :set encoding=utf-8 383 384However, not all combinations of values are possible. The table below tells 385you how each of the nine combinations works. This is further restricted by 386not all conversions being possible, iconv() being present, etc. Since this 387depends on the system used, no detailed list can be given. 388 389('tenc' is the short name for 'termencoding' and 'enc' short for 'encoding') 390 391'tenc' 'enc' remark ~ 392 393 8bit 8bit Works. When 'termencoding' is different from 394 'encoding' typing and displaying may be wrong for some 395 characters, Vim does NOT perform conversion (set 396 'encoding' to "utf-8" to get this). 397 8bit 2byte MS-Windows: works for all codepages installed on your 398 system; you can only type 8bit characters; 399 Other systems: does NOT work. 400 8bit Unicode Works, but only 8bit characters can be typed directly 401 (others through digraphs, keymaps, etc.); in a 402 terminal you can only see 8bit characters; the GUI can 403 show all characters that the 'guifont' supports. 404 405 2byte 8bit Works, but typing non-ASCII characters might 406 be a problem. 407 2byte 2byte MS-Windows: works for all codepages installed on your 408 system; typing characters might be a problem when 409 locale is different from 'encoding'. 410 Other systems: Only works when 'termencoding' is equal 411 to 'encoding', you might as well leave it empty. 412 2byte Unicode works, Vim will translate typed characters. 413 414 Unicode 8bit works (unusual) 415 Unicode 2byte does NOT work 416 Unicode Unicode works very well (leaving 'termencoding' empty works 417 the same way, because all Unicode is handled 418 internally as UTF-8) 419 420CONVERSION *charset-conversion* 421 422Vim will automatically convert from one to another encoding in several places: 423- When reading a file and 'fileencoding' is different from 'encoding' 424- When writing a file and 'fileencoding' is different from 'encoding' 425- When displaying characters and 'termencoding' is different from 'encoding' 426- When reading input and 'termencoding' is different from 'encoding' 427- When displaying messages and the encoding used for LC_MESSAGES differs from 428 'encoding' (requires a gettext version that supports this). 429- When reading a Vim script where |:scriptencoding| is different from 430 'encoding'. 431- When reading or writing a |viminfo| file. 432Most of these require the |+iconv| feature. Conversion for reading and 433writing files may also be specified with the 'charconvert' option. 434 435Useful utilities for converting the charset: 436 All: iconv 437 GNU iconv can convert most encodings. Unicode is used as the 438 intermediate encoding, which allows conversion from and to all other 439 encodings. See http://www.gnu.org/directory/libiconv.html. 440 441 Japanese: nkf 442 Nkf is "Network Kanji code conversion Filter". One of the most unique 443 facility of nkf is the guess of the input Kanji code. So, you don't 444 need to know what the inputting file's |charset| is. When convert to 445 EUC-JP from ISO-2022-JP or Shift_JIS, simply do the following command 446 in Vim: 447 :%!nkf -e 448 Nkf can be found at: 449 http://www.sfc.wide.ad.jp/~max/FreeBSD/ports/distfiles/nkf-1.62.tar.gz 450 451 Chinese: hc 452 Hc is "Hanzi Converter". Hc convert a GB file to a Big5 file, or Big5 453 file to GB file. Hc can be found at: 454 ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz 455 456 Korean: hmconv 457 Hmconv is Korean code conversion utility especially for E-mail. It can 458 convert between EUC-KR and ISO-2022-KR. Hmconv can be found at: 459 ftp://ftp.kaist.ac.kr/pub/hangul/code/hmconv/ 460 461 Multilingual: lv 462 Lv is a Powerful Multilingual File Viewer. And it can be worked as 463 |charset| converter. Supported |charset|: ISO-2022-CN, ISO-2022-JP, 464 ISO-2022-KR, EUC-CN, EUC-JP, EUC-KR, EUC-TW, UTF-7, UTF-8, ISO-8859 465 series, Shift_JIS, Big5 and HZ. Lv can be found at: 466 http://www.ff.iij4u.or.jp/~nrt/lv/index.html 467 468 469 *mbyte-conversion* 470When reading and writing files in an encoding different from 'encoding', 471conversion needs to be done. These conversions are supported: 472- All conversions between Latin-1 (ISO-8859-1), UTF-8, UCS-2 and UCS-4 are 473 handled internally. 474- For MS-Windows, when 'encoding' is a Unicode encoding, conversion from and 475 to any codepage should work. 476- Conversion specified with 'charconvert' 477- Conversion with the iconv library, if it is available. 478 Old versions of GNU iconv() may cause the conversion to fail (they 479 request a very large buffer, more than Vim is willing to provide). 480 Try getting another iconv() implementation. 481 482 *iconv-dynamic* 483On MS-Windows Vim can be compiled with the |+iconv/dyn| feature. This means 484Vim will search for the "iconv.dll" and "libiconv.dll" libraries. When 485neither of them can be found Vim will still work but some conversions won't be 486possible. 487 488============================================================================== 4894. Using a terminal *mbyte-terminal* 490 491The GUI fully supports multi-byte characters. It is also possible in a 492terminal, if the terminal supports the same encoding that Vim uses. Thus this 493is less flexible. 494 495For example, you can run Vim in a xterm with added multi-byte support and/or 496|XIM|. Examples are kterm (Kanji term) and hanterm (for Korean), Eterm 497(Enlightened terminal) and rxvt. 498 499If your terminal does not support the right encoding, you can set the 500'termencoding' option. Vim will then convert the typed characters from 501'termencoding' to 'encoding'. And displayed text will be converted from 502'encoding' to 'termencoding'. If the encoding supported by the terminal 503doesn't include all the characters that Vim uses, this leads to lost 504characters. This may mess up the display. If you use a terminal that 505supports Unicode, such as the xterm mentioned below, it should work just fine, 506since nearly every character set can be converted to Unicode without loss of 507information. 508 509 510UTF-8 IN XFREE86 XTERM *UTF8-xterm* 511 512This is a short explanation of how to use UTF-8 character encoding in the 513xterm that comes with XFree86 by Thomas Dickey (text by Markus Kuhn). 514 515Get the latest xterm version which has now UTF-8 support: 516 517 http://invisible-island.net/xterm/xterm.html 518 519Compile it with "./configure --enable-wide-chars ; make" 520 521Also get the ISO 10646-1 version of various fonts, which is available on 522 523 http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz 524 525and install the font as described in the README file. 526 527Now start xterm with > 528 529 xterm -u8 -fn -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 530or, for bigger character: > 531 xterm -u8 -fn -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 532 533and you will have a working UTF-8 terminal emulator. Try both > 534 535 cat utf-8-demo.txt 536 vim utf-8-demo.txt 537 538with the demo text that comes with ucs-fonts.tar.gz in order to see 539whether there are any problems with UTF-8 in your xterm. 540 541For Vim you may need to set 'encoding' to "utf-8". 542 543============================================================================== 5445. Fonts on X11 *mbyte-fonts-X11* 545 546Unfortunately, using fonts in X11 is complicated. The name of a single-byte 547font is a long string. For multi-byte fonts we need several of these... 548 549Note: Most of this is no longer relevant for GTK+ 2. Selecting a font via 550its XLFD is not supported; see 'guifont' for an example of how to 551set the font. Do yourself a favor and ignore the |XLFD| and |xfontset| 552sections below. 553 554First of all, Vim only accepts fixed-width fonts for displaying text. You 555cannot use proportionally spaced fonts. This excludes many of the available 556(and nicer looking) fonts. However, for menus and tooltips any font can be 557used. 558 559Note that Display and Input are independent. It is possible to see your 560language even though you have no input method for it. 561 562You should get a default font for menus and tooltips that works, but it might 563be ugly. Read the following to find out how to select a better font. 564 565 566X LOGICAL FONT DESCRIPTION (XLFD) 567 *XLFD* 568XLFD is the X font name and contains the information about the font size, 569charset, etc. The name is in this format: 570 571FOUNDRY-FAMILY-WEIGHT-SLANT-WIDTH-STYLE-PIXEL-POINT-X-Y-SPACE-AVE-CR-CE 572 573Each field means: 574 575- FOUNDRY: FOUNDRY field. The company that created the font. 576- FAMILY: FAMILY_NAME field. Basic font family name. (helvetica, gothic, 577 times, etc) 578- WEIGHT: WEIGHT_NAME field. How thick the letters are. (light, medium, 579 bold, etc) 580- SLANT: SLANT field. 581 r: Roman (no slant) 582 i: Italic 583 o: Oblique 584 ri: Reverse Italic 585 ro: Reverse Oblique 586 ot: Other 587 number: Scaled font 588- WIDTH: SETWIDTH_NAME field. Width of characters. (normal, condensed, 589 narrow, double wide) 590- STYLE: ADD_STYLE_NAME field. Extra info to describe font. (Serif, Sans 591 Serif, Informal, Decorated, etc) 592- PIXEL: PIXEL_SIZE field. Height, in pixels, of characters. 593- POINT: POINT_SIZE field. Ten times height of characters in points. 594- X: RESOLUTION_X field. X resolution (dots per inch). 595- Y: RESOLUTION_Y field. Y resolution (dots per inch). 596- SPACE: SPACING field. 597 p: Proportional 598 m: Monospaced 599 c: CharCell 600- AVE: AVERAGE_WIDTH field. Ten times average width in pixels. 601- CR: CHARSET_REGISTRY field. The name of the charset group. 602- CE: CHARSET_ENCODING field. The rest of the charset name. For some 603 charsets, such as JIS X 0208, if this field is 0, code points has 604 the same value as GL, and GR if 1. 605 606For example, in case of a 16 dots font corresponding to JIS X 0208, it is 607written like: 608 -misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0 609 610 611X FONTSET 612 *fontset* *xfontset* 613A single-byte charset is typically associated with one font. For multi-byte 614charsets a combination of fonts is often used. This means that one group of 615characters are used from one font and another group from another font (which 616might be double wide). This collection of fonts is called a fontset. 617 618Which fonts are required in a fontset depends on the current locale. X 619windows maintains a table of which groups of characters are required for a 620locale. You have to specify all the fonts that a locale requires in the 621'guifontset' option. 622 623Setting the 'guifontset' option also means that all font names will be handled 624as a fontset name. Also the ones used for the "font" argument of the 625|:highlight| command. 626 627Note the difference between 'guifont' and 'guifontset': In 'guifont' 628the comma-separated names are alternative names, one of which will be 629used. In 'guifontset' the whole string is one fontset name, 630including the commas. It is not possible to specify alternative 631fontset names. 632This example works on many X11 systems: > 633 :set guifontset=-*-*-medium-r-normal--16-*-*-*-c-*-*-* 634< 635The fonts must match with the current locale. If fonts for the character sets 636that the current locale uses are not included, setting 'guifontset' will fail. 637 638NOTE: The fontset always uses the current locale, even though 'encoding' may 639be set to use a different charset. In that situation you might want to use 640'guifont' and 'guifontwide' instead of 'guifontset'. 641 642Example: 643 |charset| language "groups of characters" ~ 644 GB2312 Chinese (simplified) ISO-8859-1 and GB 2312 645 Big5 Chinese (traditional) ISO-8859-1 and Big5 646 CNS-11643 Chinese (traditional) ISO-8859-1, CNS 11643-1 and CNS 11643-2 647 EUC-JP Japanese JIS X 0201 and JIS X 0208 648 EUC-KR Korean ISO-8859-1 and KS C 5601 (KS X 1001) 649 650You can search for fonts using the xlsfonts command. For example, when you're 651searching for a font for KS C 5601: > 652 xlsfonts | grep ksc5601 653 654This is complicated and confusing. You might want to consult the X-Windows 655documentation if there is something you don't understand. 656 657 *base_font_name_list* 658When you have found the names of the fonts you want to use, you need to set 659the 'guifontset' option. You specify the list by concatenating the font names 660and putting a comma in between them. 661 662For example, when you use the ja_JP.eucJP locale, this requires JIS X 0201 663and JIS X 0208. You could supply a list of fonts that explicitly specifies 664the charsets, like: > 665 666 :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0, 667 \-misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0 668 669Alternatively, you can supply a base font name list that omits the charset 670name, letting X-Windows select font characters required for the locale. For 671example: > 672 673 :set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140, 674 \-misc-fixed-medium-r-normal--14-130-75-75-c-70 675 676Alternatively, you can supply a single base font name that allows X-Windows to 677select from all available fonts. For example: > 678 679 :set guifontset=-misc-fixed-medium-r-normal--14-* 680 681Alternatively, you can specify alias names. See the fonts.alias file in the 682fonts directory (e.g., /usr/X11R6/lib/X11/fonts/). For example: > 683 684 :set guifontset=k14,r14 685< 686 *E253* 687Note that in East Asian fonts, the standard character cell is square. When 688mixing a Latin font and an East Asian font, the East Asian font width should 689be twice the Latin font width. 690 691If 'guifontset' is not empty, the "font" argument of the |:highlight| command 692is also interpreted as a fontset. For example, you should use for 693highlighting: > 694 :hi Comment font=english_font,your_font 695If you use a wrong "font" argument you will get an error message. 696Also make sure that you set 'guifontset' before setting fonts for highlight 697groups. 698 699 700USING RESOURCE FILES 701 702Instead of specifying 'guifontset', you can set X11 resources and Vim will 703pick them up. This is only for people who know how X resource files work. 704 705For Motif and Athena insert these three lines in your $HOME/.Xdefaults file: 706 707 Vim.font: |base_font_name_list| 708 Vim*fontSet: |base_font_name_list| 709 Vim*fontList: your_language_font 710 711Note: Vim.font is for text area. 712 Vim*fontSet is for menu. 713 Vim*fontList is for menu (for Motif GUI) 714 715For example, when you are using Japanese and a 14 dots font, > 716 717 Vim.font: -misc-fixed-medium-r-normal--14-* 718 Vim*fontSet: -misc-fixed-medium-r-normal--14-* 719 Vim*fontList: -misc-fixed-medium-r-normal--14-* 720< 721or: > 722 723 Vim*font: k14,r14 724 Vim*fontSet: k14,r14 725 Vim*fontList: k14,r14 726< 727To have them take effect immediately you will have to do > 728 729 xrdb -merge ~/.Xdefaults 730 731Otherwise you will have to stop and restart the X server before the changes 732take effect. 733 734 735The GTK+ version of GUI Vim does not use .Xdefaults, use ~/.gtkrc instead. 736The default mostly works OK. But for the menus you might have to change 737it. Example: > 738 739 style "default" 740 { 741 fontset="-*-*-medium-r-normal--14-*-*-*-c-*-*-*" 742 } 743 widget_class "*" style "default" 744 745============================================================================== 7466. Fonts on MS-Windows *mbyte-fonts-MSwin* 747 748The simplest is to use the font dialog to select fonts and try them out. You 749can find this at the "Edit/Select Font..." menu. Once you find a font name 750that works well you can use this command to see its name: > 751 752 :set guifont 753 754Then add a command to your |gvimrc| file to set 'guifont': > 755 756 :set guifont=courier_new:h12 757 758============================================================================== 7597. Input on X11 *mbyte-XIM* 760 761X INPUT METHOD (XIM) BACKGROUND *XIM* *xim* *x-input-method* 762 763XIM is an international input module for X. There are two kinds of structures, 764Xlib unit type and |IM-server| (Input-Method server) type. |IM-server| type 765is suitable for complex input, such as CJK. 766 767- IM-server 768 *IM-server* 769 In |IM-server| type input structures, the input event is handled by either 770 of the two ways: FrontEnd system and BackEnd system. In the FrontEnd 771 system, input events are snatched by the |IM-server| first, then |IM-server| 772 give the application the result of input. On the other hand, the BackEnd 773 system works reverse order. MS Windows adopt BackEnd system. In X, most of 774 |IM-server|s adopt FrontEnd system. The demerit of BackEnd system is the 775 large overhead in communication, but it provides safe synchronization with 776 no restrictions on applications. 777 778 For example, there are xwnmo and kinput2 Japanese |IM-server|, both are 779 FrontEnd system. Xwnmo is distributed with Wnn (see below), kinput2 can be 780 found at: ftp://ftp.sra.co.jp/pub/x11/kinput2/ 781 782 For Chinese, there's a great XIM server named "xcin", you can input both 783 Traditional and Simplified Chinese characters. And it can accept other 784 locale if you make a correct input table. Xcin can be found at: 785 http://cle.linux.org.tw/xcin/ 786 Others are scim: http://scim.freedesktop.org/ and fcitx: 787 http://www.fcitx.org/ 788 789- Conversion Server 790 *conversion-server* 791 Some system needs additional server: conversion server. Most of Japanese 792 |IM-server|s need it, Kana-Kanji conversion server. For Chinese inputting, 793 it depends on the method of inputting, in some methods, PinYin or ZhuYin to 794 HanZi conversion server is needed. For Korean inputting, if you want to 795 input Hanja, Hangul-Hanja conversion server is needed. 796 797 For example, the Japanese inputting process is divided into 2 steps. First 798 we pre-input Hira-gana, second Kana-Kanji conversion. There are so many 799 Kanji characters (6349 Kanji characters are defined in JIS X 0208) and the 800 number of Hira-gana characters are 76. So, first, we pre-input text as 801 pronounced in Hira-gana, second, we convert Hira-gana to Kanji or Kata-Kana, 802 if needed. There are some Kana-Kanji conversion server: jserver 803 (distributed with Wnn, see below) and canna. Canna can be found at: 804 http://canna.sourceforge.jp/ 805 806There is a good input system: Wnn4.2. Wnn 4.2 contains, 807 xwnmo (|IM-server|) 808 jserver (Japanese Kana-Kanji conversion server) 809 cserver (Chinese PinYin or ZhuYin to simplified HanZi conversion server) 810 tserver (Chinese PinYin or ZhuYin to traditional HanZi conversion server) 811 kserver (Hangul-Hanja conversion server) 812Wnn 4.2 for several systems can be found at various places on the internet. 813Use the RPM or port for your system. 814 815 816- Input Style 817 *xim-input-style* 818 When inputting CJK, there are four areas: 819 1. The area to display of the input while it is being composed 820 2. The area to display the currently active input mode. 821 3. The area to display the next candidate for the selection. 822 4. The area to display other tools. 823 824 The third area is needed when converting. For example, in Japanese 825 inputting, multiple Kanji characters could have the same pronunciation, so 826 a sequence of Hira-gana characters could map to a distinct sequence of Kanji 827 characters. 828 829 The first and second areas are defined in international input of X with the 830 names of "Preedit Area", "Status Area" respectively. The third and fourth 831 areas are not defined and are left to be managed by the |IM-server|. In the 832 international input, four input styles have been defined using combinations 833 of Preedit Area and Status Area: |OnTheSpot|, |OffTheSpot|, |OverTheSpot| 834 and |Root|. 835 836 Currently, GUI Vim supports three styles, |OverTheSpot|, |OffTheSpot| and 837 |Root|. 838 When compiled with |+GUI_GTK| feature, GUI Vim supports two styles, 839 |OnTheSpot| and |OverTheSpot|. You can select the style with the 'imstyle' 840 option. 841 842*. on-the-spot *OnTheSpot* 843 Preedit Area and Status Area are performed by the client application in 844 the area of application. The client application is directed by the 845 |IM-server| to display all pre-edit data at the location of text 846 insertion. The client registers callbacks invoked by the input method 847 during pre-editing. 848*. over-the-spot *OverTheSpot* 849 Status Area is created in a fixed position within the area of application, 850 in case of Vim, the position is the additional status line. Preedit Area 851 is made at present input position of application. The input method 852 displays pre-edit data in a window which it brings up directly over the 853 text insertion position. 854*. off-the-spot *OffTheSpot* 855 Preedit Area and Status Area are performed in the area of application, in 856 case of Vim, the area is additional status line. The client application 857 provides display windows for the pre-edit data to the input method which 858 displays into them directly. 859*. root-window *Root* 860 Preedit Area and Status Area are outside of the application. The input 861 method displays all pre-edit data in a separate area of the screen in a 862 window specific to the input method. 863 864 865USING XIM *multibyte-input* *E284* *E286* *E287* *E288* 866 *E285* *E289* 867 868Note that Display and Input are independent. It is possible to see your 869language even though you have no input method for it. But when your Display 870method doesn't match your Input method, the text will be displayed wrong. 871 872 Note: You can not use IM unless you specify 'guifontset'. 873 Therefore, Latin users, you have to also use 'guifontset' 874 if you use IM. 875 876To input your language you should run the |IM-server| which supports your 877language and |conversion-server| if needed. 878 879The next 3 lines should be put in your ~/.Xdefaults file. They are common for 880all X applications which uses |XIM|. If you already use |XIM|, you can skip 881this. > 882 883 *international: True 884 *.inputMethod: your_input_server_name 885 *.preeditType: your_input_style 886< 887input_server_name is your |IM-server| name (check your |IM-server| 888 manual). 889your_input_style is one of |OverTheSpot|, |OffTheSpot|, |Root|. See 890 also |xim-input-style|. 891 892*international may not necessary if you use X11R6. 893*.inputMethod and *.preeditType are optional if you use X11R6. 894 895For example, when you are using kinput2 as |IM-server|, > 896 897 *international: True 898 *.inputMethod: kinput2 899 *.preeditType: OverTheSpot 900< 901When using |OverTheSpot|, GUI Vim always connects to the IM Server even in 902Normal mode, so you can input your language with commands like "f" and "r". 903But when using one of the other two methods, GUI Vim connects to the IM Server 904only if it is not in Normal mode. 905 906If your IM Server does not support |OverTheSpot|, and if you want to use your 907language with some Normal mode command like "f" or "r", then you should use a 908localized xterm or an xterm which supports |XIM| 909 910If needed, you can set the XMODIFIERS environment variable: 911 912 sh: export XMODIFIERS="@im=input_server_name" 913 csh: setenv XMODIFIERS "@im=input_server_name" 914 915For example, when you are using kinput2 as |IM-server| and sh, > 916 917 export XMODIFIERS="@im=kinput2" 918< 919 920FULLY CONTROLLED XIM 921 922You can fully control XIM, like with IME of MS-Windows (see |multibyte-ime|). 923This is currently only available for the GTK GUI. 924 925Before using fully controlled XIM, one setting is required. Set the 926'imactivatekey' option to the key that is used for the activation of the input 927method. For example, when you are using kinput2 + canna as IM Server, the 928activation key is probably Shift+Space: > 929 930 :set imactivatekey=S-space 931 932See 'imactivatekey' for the format. 933 934============================================================================== 9358. Input on MS-Windows *mbyte-IME* 936 937(Windows IME support) *multibyte-ime* *IME* 938 939{only works Windows GUI and compiled with the |+multi_byte_ime| feature} 940 941To input multibyte characters on Windows, you can use an Input Method Editor 942(IME). In process of your editing text, you must switch status (on/off) of 943IME many many many times. Because IME with status on is hooking all of your 944key inputs, you cannot input 'j', 'k', or almost all of keys to Vim directly. 945 946This |+multi_byte_ime| feature help this. It reduce times of switch status of 947IME manually. In normal mode, there are almost no need working IME, even 948editing multibyte text. So exiting insert mode with ESC, Vim memorize last 949status of IME and force turn off IME. When re-enter insert mode, Vim revert 950IME status to that memorized automatically. 951 952This works on not only insert-normal mode, but also search-command input and 953replace mode. 954The options 'iminsert', 'imsearch' and 'imcmdline' can be used to chose 955the different input methods or disable them temporarily. 956 957WHAT IS IME 958 IME is a part of East asian version Windows. That helps you to input 959 multibyte character. English and other language version Windows does not 960 have any IME. (Also there is no need usually.) But there is one that 961 called Microsoft Global IME. Global IME is a part of Internet Explorer 962 4.0 or above. You can get more information about Global IME, at below 963 URL. 964 965WHAT IS GLOBAL IME *global-ime* 966 Global IME makes capability to input Chinese, Japanese, and Korean text 967 into Vim buffer on any language version of Windows 98, Windows 95, and 968 Windows NT 4.0. 969 On Windows 2000 and XP it should work as well (without downloading). On 970 Windows 2000 Professional, Global IME is built in, and the Input Locales 971 can be added through Control Panel/Regional Options/Input Locales. 972 Please see below URL for detail of Global IME. You can also find various 973 language version of Global IME at same place. 974 975 - Global IME detailed information. 976 http://search.microsoft.com/results.aspx?q=global+ime 977 978 - Active Input Method Manager (Global IME) 979 http://msdn.microsoft.com/en-us/library/aa741221(v=VS.85).aspx 980 981 Support for Global IME is an experimental feature. 982 983NOTE: For IME to work you must make sure the input locales of your language 984are added to your system. The exact location of this depends on the version 985of Windows you use. For example, on my Windows 2000 box: 9861. Control Panel 9872. Regional Options 9883. Input Locales Tab 9894. Add Installed input locales -> Chinese(PRC) 990 The default is still English (United Stated) 991 992 993Cursor color when IME or XIM is on *CursorIM* 994 There is a little cute feature for IME. Cursor can indicate status of IME 995 by changing its color. Usually status of IME was indicated by little icon 996 at a corner of desktop (or taskbar). It is not easy to verify status of 997 IME. But this feature help this. 998 This works in the same way when using XIM. 999 1000 You can select cursor color when status is on by using highlight group 1001 CursorIM. For example, add these lines to your |gvimrc|: > 1002 1003 if has('multi_byte_ime') 1004 highlight Cursor guifg=NONE guibg=Green 1005 highlight CursorIM guifg=NONE guibg=Purple 1006 endif 1007< 1008 Cursor color with off IME is green. And purple cursor indicates that 1009 status is on. 1010 1011============================================================================== 10129. Input with a keymap *mbyte-keymap* 1013 1014When the keyboard doesn't produce the characters you want to enter in your 1015text, you can use the 'keymap' option. This will translate one or more 1016(English) characters to another (non-English) character. This only happens 1017when typing text, not when typing Vim commands. This avoids having to switch 1018between two keyboard settings. 1019{only available when compiled with the |+keymap| feature} 1020 1021The value of the 'keymap' option specifies a keymap file to use. The name of 1022this file is one of these two: 1023 1024 keymap/{keymap}_{encoding}.vim 1025 keymap/{keymap}.vim 1026 1027Here {keymap} is the value of the 'keymap' option and {encoding} of the 1028'encoding' option. The file name with the {encoding} included is tried first. 1029 1030'runtimepath' is used to find these files. To see an overview of all 1031available keymap files, use this: > 1032 :echo globpath(&rtp, "keymap/*.vim") 1033 1034In Insert and Command-line mode you can use CTRL-^ to toggle between using the 1035keyboard map or not. |i_CTRL-^| |c_CTRL-^| 1036This flag is remembered for Insert mode with the 'iminsert' option. When 1037leaving and entering Insert mode the previous value is used. The same value 1038is also used for commands that take a single character argument, like |f| and 1039|r|. 1040For Command-line mode the flag is NOT remembered. You are expected to type an 1041Ex command first, which is ASCII. 1042For typing search patterns the 'imsearch' option is used. It can be set to 1043use the same value as for 'iminsert'. 1044 *lCursor* 1045It is possible to give the GUI cursor another color when the language mappings 1046are being used. This is disabled by default, to avoid that the cursor becomes 1047invisible when you use a non-standard background color. Here is an example to 1048use a brightly colored cursor: > 1049 :highlight Cursor guifg=NONE guibg=Green 1050 :highlight lCursor guifg=NONE guibg=Cyan 1051< 1052 *keymap-file-format* *:loadk* *:loadkeymap* *E105* *E791* 1053The keymap file looks something like this: > 1054 1055 " Maintainer: name <email@address> 1056 " Last Changed: 2001 Jan 1 1057 1058 let b:keymap_name = "short" 1059 1060 loadkeymap 1061 a A 1062 b B comment 1063 1064The lines starting with a " are comments and will be ignored. Blank lines are 1065also ignored. The lines with the mappings may have a comment after the useful 1066text. 1067 1068The "b:keymap_name" can be set to a short name, which will be shown in the 1069status line. The idea is that this takes less room than the value of 1070'keymap', which might be long to distinguish between different languages, 1071keyboards and encodings. 1072 1073The actual mappings are in the lines below "loadkeymap". In the example "a" 1074is mapped to "A" and "b" to "B". Thus the first item is mapped to the second 1075item. This is done for each line, until the end of the file. 1076These items are exactly the same as what can be used in a |:lnoremap| command, 1077using "<buffer>" to make the mappings local to the buffer. 1078You can check the result with this command: > 1079 :lmap 1080The two items must be separated by white space. You cannot include white 1081space inside an item, use the special names "<Tab>" and "<Space>" instead. 1082The length of the two items together must not exceed 200 bytes. 1083 1084It's possible to have more than one character in the first column. This works 1085like a dead key. Example: > 1086 'a á 1087Since Vim doesn't know if the next character after a quote is really an "a", 1088it will wait for the next character. To be able to insert a single quote, 1089also add this line: > 1090 '' ' 1091Since the mapping is defined with |:lnoremap| the resulting quote will not be 1092used for the start of another character. 1093The "accents" keymap uses this. *keymap-accents* 1094 1095The first column can also be in |<>| form: 1096 <C-c> Ctrl-C 1097 <A-c> Alt-c 1098 <A-C> Alt-C 1099Note that the Alt mappings may not work, depending on your keyboard and 1100terminal. 1101 1102Although it's possible to have more than one character in the second column, 1103this is unusual. But you can use various ways to specify the character: > 1104 A a literal character 1105 A <char-97> decimal value 1106 A <char-0x61> hexadecimal value 1107 A <char-0141> octal value 1108 x <Space> special key name 1109 1110The characters are assumed to be encoded for the current value of 'encoding'. 1111It's possible to use ":scriptencoding" when all characters are given 1112literally. That doesn't work when using the <char-> construct, because the 1113conversion is done on the keymap file, not on the resulting character. 1114 1115The lines after "loadkeymap" are interpreted with 'cpoptions' set to "C". 1116This means that continuation lines are not used and a backslash has a special 1117meaning in the mappings. Examples: > 1118 1119 " a comment line 1120 \" x maps " to x 1121 \\ y maps \ to y 1122 1123If you write a keymap file that will be useful for others, consider submitting 1124it to the Vim maintainer for inclusion in the distribution: 1125<[email protected]> 1126 1127 1128HEBREW KEYMAP *keymap-hebrew* 1129 1130This file explains what characters are available in UTF-8 and CP1255 encodings, 1131and what the keymaps are to get those characters: 1132 1133glyph encoding keymap ~ 1134Char utf-8 cp1255 hebrew hebrewp name ~ 1135א 0x5d0 0xe0 t a 'alef 1136ב 0x5d1 0xe1 c b bet 1137ג 0x5d2 0xe2 d g gimel 1138ד 0x5d3 0xe3 s d dalet 1139ה 0x5d4 0xe4 v h he 1140ו 0x5d5 0xe5 u v vav 1141ז 0x5d6 0xe6 z z zayin 1142ח 0x5d7 0xe7 j j het 1143ט 0x5d8 0xe8 y T tet 1144י 0x5d9 0xe9 h y yod 1145ך 0x5da 0xea l K kaf sofit 1146כ 0x5db 0xeb f k kaf 1147ל 0x5dc 0xec k l lamed 1148ם 0x5dd 0xed o M mem sofit 1149מ 0x5de 0xee n m mem 1150ן 0x5df 0xef i N nun sofit 1151נ 0x5e0 0xf0 b n nun 1152ס 0x5e1 0xf1 x s samech 1153ע 0x5e2 0xf2 g u `ayin 1154ף 0x5e3 0xf3 ; P pe sofit 1155פ 0x5e4 0xf4 p p pe 1156ץ 0x5e5 0xf5 . X tsadi sofit 1157צ 0x5e6 0xf6 m x tsadi 1158ק 0x5e7 0xf7 e q qof 1159ר 0x5e8 0xf8 r r resh 1160ש 0x5e9 0xf9 a w shin 1161ת 0x5ea 0xfa , t tav 1162 1163Vowel marks and special punctuation: 1164הְ 0x5b0 0xc0 A: A: sheva 1165הֱ 0x5b1 0xc1 HE HE hataf segol 1166הֲ 0x5b2 0xc2 HA HA hataf patah 1167הֳ 0x5b3 0xc3 HO HO hataf qamats 1168הִ 0x5b4 0xc4 I I hiriq 1169הֵ 0x5b5 0xc5 AY AY tsere 1170הֶ 0x5b6 0xc6 E E segol 1171הַ 0x5b7 0xc7 AA AA patah 1172הָ 0x5b8 0xc8 AO AO qamats 1173הֹ 0x5b9 0xc9 O O holam 1174הֻ 0x5bb 0xcb U U qubuts 1175כּ 0x5bc 0xcc D D dagesh 1176הֽ 0x5bd 0xcd ]T ]T meteg 1177ה־ 0x5be 0xce ]Q ]Q maqaf 1178בֿ 0x5bf 0xcf ]R ]R rafe 1179ב׀ 0x5c0 0xd0 ]p ]p paseq 1180שׁ 0x5c1 0xd1 SR SR shin-dot 1181שׂ 0x5c2 0xd2 SL SL sin-dot 1182׃ 0x5c3 0xd3 ]P ]P sof-pasuq 1183װ 0x5f0 0xd4 VV VV double-vav 1184ױ 0x5f1 0xd5 VY VY vav-yod 1185ײ 0x5f2 0xd6 YY YY yod-yod 1186 1187The following are only available in utf-8 1188 1189Cantillation marks: 1190glyph 1191Char utf-8 hebrew name 1192ב֑ 0x591 C: etnahta 1193ב֒ 0x592 Cs segol 1194ב֓ 0x593 CS shalshelet 1195ב֔ 0x594 Cz zaqef qatan 1196ב֕ 0x595 CZ zaqef gadol 1197ב֖ 0x596 Ct tipeha 1198ב֗ 0x597 Cr revia 1199ב֘ 0x598 Cq zarqa 1200ב֙ 0x599 Cp pashta 1201ב֚ 0x59a C! yetiv 1202ב֛ 0x59b Cv tevir 1203ב֜ 0x59c Cg geresh 1204ב֝ 0x59d C* geresh qadim 1205ב֞ 0x59e CG gershayim 1206ב֟ 0x59f CP qarnei-parah 1207ב֪ 0x5aa Cy yerach-ben-yomo 1208ב֫ 0x5ab Co ole 1209ב֬ 0x5ac Ci iluy 1210ב֭ 0x5ad Cd dehi 1211ב֮ 0x5ae Cn zinor 1212ב֯ 0x5af CC masora circle 1213 1214Combining forms: 1215ﬠ 0xfb20 X` Alternative `ayin 1216ﬡ 0xfb21 X' Alternative 'alef 1217ﬢ 0xfb22 X-d Alternative dalet 1218ﬣ 0xfb23 X-h Alternative he 1219ﬤ 0xfb24 X-k Alternative kaf 1220ﬥ 0xfb25 X-l Alternative lamed 1221ﬦ 0xfb26 X-m Alternative mem-sofit 1222ﬧ 0xfb27 X-r Alternative resh 1223ﬨ 0xfb28 X-t Alternative tav 1224﬩ 0xfb29 X-+ Alternative plus 1225שׁ 0xfb2a XW shin+shin-dot 1226שׂ 0xfb2b Xw shin+sin-dot 1227שּׁ 0xfb2c X..W shin+shin-dot+dagesh 1228שּׂ 0xfb2d X..w shin+sin-dot+dagesh 1229אַ 0xfb2e XA alef+patah 1230אָ 0xfb2f XO alef+qamats 1231אּ 0xfb30 XI alef+hiriq (mapiq) 1232בּ 0xfb31 X.b bet+dagesh 1233גּ 0xfb32 X.g gimel+dagesh 1234דּ 0xfb33 X.d dalet+dagesh 1235הּ 0xfb34 X.h he+dagesh 1236וּ 0xfb35 Xu vav+dagesh 1237זּ 0xfb36 X.z zayin+dagesh 1238טּ 0xfb38 X.T tet+dagesh 1239יּ 0xfb39 X.y yud+dagesh 1240ךּ 0xfb3a X.K kaf sofit+dagesh 1241כּ 0xfb3b X.k kaf+dagesh 1242לּ 0xfb3c X.l lamed+dagesh 1243מּ 0xfb3e X.m mem+dagesh 1244נּ 0xfb40 X.n nun+dagesh 1245סּ 0xfb41 X.s samech+dagesh 1246ףּ 0xfb43 X.P pe sofit+dagesh 1247פּ 0xfb44 X.p pe+dagesh 1248צּ 0xfb46 X.x tsadi+dagesh 1249קּ 0xfb47 X.q qof+dagesh 1250רּ 0xfb48 X.r resh+dagesh 1251שּ 0xfb49 X.w shin+dagesh 1252תּ 0xfb4a X.t tav+dagesh 1253וֹ 0xfb4b Xo vav+holam 1254בֿ 0xfb4c XRb bet+rafe 1255כֿ 0xfb4d XRk kaf+rafe 1256פֿ 0xfb4e XRp pe+rafe 1257ﭏ 0xfb4f Xal alef-lamed 1258 1259============================================================================== 126010. Input with imactivatefunc() *mbyte-func* 1261 1262Vim has the 'imactivatefunc' and 'imstatusfunc' options. These are useful to 1263activate/deactivate the input method from Vim in any way, also with an external 1264command. For example, fcitx provide fcitx-remote command: > 1265 1266 set iminsert=2 1267 set imsearch=2 1268 set imcmdline 1269 1270 set imactivatefunc=ImActivate 1271 function! ImActivate(active) 1272 if a:active 1273 call system('fcitx-remote -o') 1274 else 1275 call system('fcitx-remote -c') 1276 endif 1277 endfunction 1278 1279 set imstatusfunc=ImStatus 1280 function! ImStatus() 1281 return system('fcitx-remote')[0] is# '2' 1282 endfunction 1283 1284Using this script, you can activate/deactivate XIM via Vim even when it is not 1285compiled with |+xim|. 1286 1287============================================================================== 128811. Using UTF-8 *mbyte-utf8* *UTF-8* *utf-8* *utf8* 1289 *Unicode* *unicode* 1290The Unicode character set was designed to include all characters from other 1291character sets. Therefore it is possible to write text in any language using 1292Unicode (with a few rarely used languages excluded). And it's mostly possible 1293to mix these languages in one file, which is impossible with other encodings. 1294 1295Unicode can be encoded in several ways. The most popular one is UTF-8, which 1296uses one or more bytes for each character and is backwards compatible with 1297ASCII. On MS-Windows UTF-16 is also used (previously UCS-2), which uses 129816-bit words. Vim can support all of these encodings, but always uses UTF-8 1299internally. 1300 1301Vim has comprehensive UTF-8 support. It works well in: 1302- xterm with utf-8 support enabled 1303- Athena, Motif and GTK GUI 1304- MS-Windows GUI 1305- several other platforms 1306 1307Double-width characters are supported. This works best with 'guifontwide' or 1308'guifontset'. When using only 'guifont' the wide characters are drawn in the 1309normal width and a space to fill the gap. Note that the 'guifontset' option 1310is no longer relevant in the GTK+ 2 GUI. 1311 1312 *bom-bytes* 1313When reading a file a BOM (Byte Order Mark) can be used to recognize the 1314Unicode encoding: 1315 EF BB BF utf-8 1316 FE FF utf-16 big endian 1317 FF FE utf-16 little endian 1318 00 00 FE FF utf-32 big endian 1319 FF FE 00 00 utf-32 little endian 1320 1321Utf-8 is the recommended encoding. Note that it's difficult to tell utf-16 1322and utf-32 apart. Utf-16 is often used on MS-Windows, utf-32 is not 1323widespread as file format. 1324 1325 1326 *mbyte-combining* *mbyte-composing* 1327A composing or combining character is used to change the meaning of the 1328character before it. The combining characters are drawn on top of the 1329preceding character. 1330Up to two combining characters can be used by default. This can be changed 1331with the 'maxcombine' option. 1332When editing text a composing character is mostly considered part of the 1333preceding character. For example "x" will delete a character and its 1334following composing characters by default. 1335If the 'delcombine' option is on, then pressing 'x' will delete the combining 1336characters, one at a time, then the base character. But when inserting, you 1337type the first character and the following composing characters separately, 1338after which they will be joined. The "r" command will not allow you to type a 1339combining character, because it doesn't know one is coming. Use "R" instead. 1340 1341Bytes which are not part of a valid UTF-8 byte sequence are handled like a 1342single character and displayed as <xx>, where "xx" is the hex value of the 1343byte. 1344 1345Overlong sequences are not handled specially and displayed like a valid 1346character. However, search patterns may not match on an overlong sequence. 1347(an overlong sequence is where more bytes are used than required for the 1348character.) An exception is NUL (zero) which is displayed as "<00>". 1349 1350In the file and buffer the full range of Unicode characters can be used (31 1351bits). However, displaying only works for the characters present in the 1352selected font. 1353 1354Useful commands: 1355- "ga" shows the decimal, hexadecimal and octal value of the character under 1356 the cursor. If there are composing characters these are shown too. (If the 1357 message is truncated, use ":messages"). 1358- "g8" shows the bytes used in a UTF-8 character, also the composing 1359 characters, as hex numbers. 1360- ":set encoding=utf-8 fileencodings=" forces using UTF-8 for all files. The 1361 default is to use the current locale for 'encoding' and set 'fileencodings' 1362 to automatically detect the encoding of a file. 1363 1364 1365STARTING VIM 1366 1367If your current locale is in an utf-8 encoding, Vim will automatically start 1368in utf-8 mode. 1369 1370If you are using another locale: > 1371 1372 set encoding=utf-8 1373 1374You might also want to select the font used for the menus. Unfortunately this 1375doesn't always work. See the system specific remarks below, and 'langmenu'. 1376 1377 1378USING UTF-8 IN X-Windows *utf-8-in-xwindows* 1379 1380Note: This section does not apply to the GTK+ 2 GUI. 1381 1382You need to specify a font to be used. For double-wide characters another 1383font is required, which is exactly twice as wide. There are three ways to do 1384this: 1385 13861. Set 'guifont' and let Vim find a matching 'guifontwide' 13872. Set 'guifont' and 'guifontwide' 13883. Set 'guifontset' 1389 1390See the documentation for each option for details. Example: > 1391 1392 :set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 1393 1394You might also want to set the font used for the menus. This only works for 1395Motif. Use the ":hi Menu font={fontname}" command for this. |:highlight| 1396 1397 1398TYPING UTF-8 *utf-8-typing* 1399 1400If you are using X-Windows, you should find an input method that supports 1401utf-8. 1402 1403If your system does not provide support for typing utf-8, you can use the 1404'keymap' feature. This allows writing a keymap file, which defines a utf-8 1405character as a sequence of ASCII characters. See |mbyte-keymap|. 1406 1407Another method is to set the current locale to the language you want to use 1408and for which you have a XIM available. Then set 'termencoding' to that 1409language and Vim will convert the typed characters to 'encoding' for you. 1410 1411If everything else fails, you can type any character as four hex bytes: > 1412 1413 CTRL-V u 1234 1414 1415"1234" is interpreted as a hex number. You must type four characters, prepend 1416a zero if necessary. 1417 1418 1419COMMAND ARGUMENTS *utf-8-char-arg* 1420 1421Commands like |f|, |F|, |t| and |r| take an argument of one character. For 1422UTF-8 this argument may include one or two composing characters. These need 1423to be produced together with the base character, Vim doesn't wait for the next 1424character to be typed to find out if it is a composing character or not. 1425Using 'keymap' or |:lmap| is a nice way to type these characters. 1426 1427The commands that search for a character in a line handle composing characters 1428as follows. When searching for a character without a composing character, 1429this will find matches in the text with or without composing characters. When 1430searching for a character with a composing character, this will only find 1431matches with that composing character. It was implemented this way, because 1432not everybody is able to type a composing character. 1433 1434 1435============================================================================== 143612. Overview of options *mbyte-options* 1437 1438These options are relevant for editing multi-byte files. Check the help in 1439options.txt for detailed information. 1440 1441'encoding' Encoding used for the keyboard and display. It is also the 1442 default encoding for files. 1443 1444'fileencoding' Encoding of a file. When it's different from 'encoding' 1445 conversion is done when reading or writing the file. 1446 1447'fileencodings' List of possible encodings of a file. When opening a file 1448 these will be tried and the first one that doesn't cause an 1449 error is used for 'fileencoding'. 1450 1451'charconvert' Expression used to convert files from one encoding to another. 1452 1453'formatoptions' The 'm' flag can be included to have formatting break a line 1454 at a multibyte character of 256 or higher. Thus is useful for 1455 languages where a sequence of characters can be broken 1456 anywhere. 1457 1458'guifontset' The list of font names used for a multi-byte encoding. When 1459 this option is not empty, it replaces 'guifont'. 1460 1461'keymap' Specify the name of a keyboard mapping. 1462 1463============================================================================== 1464 1465Contributions specifically for the multi-byte features by: 1466 Chi-Deok Hwang <[email protected]> 1467 SungHyun Nam <[email protected]> 1468 K.Nagano <[email protected]> 1469 Taro Muraoka <[email protected]> 1470 Yasuhiro Matsumoto <[email protected]> 1471 1472 vim:tw=78:ts=8:noet:ft=help:norl: 1473