home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / unix / vim-6.2.tar.bz2 / vim-6.2.tar / vim62 / runtime / doc / mbyte.txt < prev    next >
Encoding:
Text File  |  2003-06-01  |  54.5 KB  |  1,368 lines

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