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