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