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