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