Partially synced with the branch.
[MacVim.git] / runtime / doc / usr_45.txt
blob5bea5d864173bea23c77d13391af772fc3ce0c4f
1 *usr_45.txt*    For Vim version 7.2c.  Last change: 2008 Apr 30
3                      VIM USER MANUAL - by Bram Moolenaar
5                              Select your language
8 The messages in Vim can be given in several languages.  This chapter explains
9 how to change which one is used.  Also, the different ways to work with files
10 in various languages is explained.
12 |45.1|  Language for Messages
13 |45.2|  Language for Menus
14 |45.3|  Using another encoding
15 |45.4|  Editing files with a different encoding
16 |45.5|  Entering language text
18      Next chapter: |usr_90.txt|  Installing Vim
19  Previous chapter: |usr_44.txt|  Your own syntax highlighted
20 Table of contents: |usr_toc.txt|
22 ==============================================================================
23 *45.1*  Language for Messages
25 When you start Vim, it checks the environment to find out what language you
26 are using.  Mostly this should work fine, and you get the messages in your
27 language (if they are available).  To see what the current language is, use
28 this command: >
30         :language
32 If it replies with "C", this means the default is being used, which is
33 English.
35         Note:
36         Using different languages only works when Vim was compiled to handle
37         it.  To find out if it works, use the ":version" command and check the
38         output for "+gettext" and "+multi_lang".  If they are there, you are
39         OK.  If you see "-gettext" or "-multi_lang" you will have to find
40         another Vim.
42 What if you would like your messages in a different language?  There are
43 several ways.  Which one you should use depends on the capabilities of your
44 system.
45    The first way is to set the environment to the desired language before
46 starting Vim.  Example for Unix: >
48         env LANG=de_DE.ISO_8859-1  vim
50 This only works if the language is available on your system.  The advantage is
51 that all the GUI messages and things in libraries will use the right language
52 as well.  A disadvantage is that you must do this before starting Vim.  If you
53 want to change language while Vim is running, you can use the second method: >
55         :language fr_FR.ISO_8859-1
57 This way you can try out several names for your language.  You will get an
58 error message when it's not supported on your system.  You don't get an error
59 when translated messages are not available.  Vim will silently fall back to
60 using English.
61    To find out which languages are supported on your system, find the
62 directory where they are listed.  On my system it is "/usr/share/locale".  On
63 some systems it's in "/usr/lib/locale".  The manual page for "setlocale"
64 should give you a hint where it is found on your system.
65    Be careful to type the name exactly as it should be.  Upper and lowercase
66 matter, and the '-' and '_' characters are easily confused.
68 You can also set the language separately for messages, edited text and the
69 time format.  See |:language|.
72 DO-IT-YOURSELF MESSAGE TRANSLATION
74 If translated messages are not available for your language, you could write
75 them yourself.  To do this, get the source code for Vim and the GNU gettext
76 package.  After unpacking the sources, instructions can be found in the
77 directory src/po/README.txt.
78    It's not too difficult to do the translation.  You don't need to be a
79 programmer.  You must know both English and the language you are translating
80 to, of course.
81    When you are satisfied with the translation, consider making it available
82 to others.  Upload it at vim-online (http://vim.sf.net) or e-mail it to
83 the Vim maintainer <maintainer@vim.org>.  Or both.
85 ==============================================================================
86 *45.2*  Language for Menus
88 The default menus are in English.  To be able to use your local language, they
89 must be translated.  Normally this is automatically done for you if the
90 environment is set for your language, just like with messages.  You don't need
91 to do anything extra for this.  But it only works if translations for the
92 language are available.
93    Suppose you are in Germany, with the language set to German, but prefer to
94 use "File" instead of "Datei".  You can switch back to using the English menus
95 this way: >
97         :set langmenu=none
99 It is also possible to specify a language: >
101         :set langmenu=nl_NL.ISO_8859-1
103 Like above, differences between "-" and "_" matter.  However, upper/lowercase
104 differences are ignored here.
105    The 'langmenu' option must be set before the menus are loaded.  Once the
106 menus have been defined changing 'langmenu' has no direct effect.  Therefore,
107 put the command to set 'langmenu' in your vimrc file.
108    If you really want to switch menu language while running Vim, you can do it
109 this way: >
111         :source $VIMRUNTIME/delmenu.vim
112         :set langmenu=de_DE.ISO_8859-1
113         :source $VIMRUNTIME/menu.vim
115 There is one drawback: All menus that you defined yourself will be gone.  You
116 will need to redefine them as well.
119 DO-IT-YOURSELF MENU TRANSLATION
121 To see which menu translations are available, look in this directory:
123         $VIMRUNTIME/lang ~
125 The files are called menu_{language}.vim.  If you don't see the language you
126 want to use, you can do your own translations.  The simplest way to do this is
127 by copying one of the existing language files, and change it.
128    First find out the name of your language with the ":language" command.  Use
129 this name, but with all letters made lowercase.  Then copy the file to your
130 own runtime directory, as found early in 'runtimepath'.  For example, for Unix
131 you would do: >
133         :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim
135 You will find hints for the translation in "$VIMRUNTIME/lang/README.txt".
137 ==============================================================================
138 *45.3*  Using another encoding
140 Vim guesses that the files you are going to edit are encoded for your
141 language.  For many European languages this is "latin1".  Then each byte is
142 one character.  That means there are 256 different characters possible.  For
143 Asian languages this is not sufficient.  These mostly use a double-byte
144 encoding, providing for over ten thousand possible characters.  This still
145 isn't enough when a text is to contain several different languages.  This is
146 where Unicode comes in.  It was designed to include all characters used in
147 commonly used languages.  This is the "Super encoding that replaces all
148 others".  But it isn't used that much yet.
149    Fortunately, Vim supports these three kinds of encodings.  And, with some
150 restrictions, you can use them even when your environment uses another
151 language than the text.
152    Nevertheless, when you only edit files that are in the encoding of your
153 language, the default should work fine and you don't need to do anything.  The
154 following is only relevant when you want to edit different languages.
156         Note:
157         Using different encodings only works when Vim was compiled to handle
158         it.  To find out if it works, use the ":version" command and check the
159         output for "+multi_byte".  If it's there, you are OK.  If you see
160         "-multi_byte" you will have to find another Vim.
163 USING UNICODE IN THE GUI
165 The nice thing about Unicode is that other encodings can be converted to it
166 and back without losing information.  When you make Vim use Unicode
167 internally, you will be able to edit files in any encoding.
168    Unfortunately, the number of systems supporting Unicode is still limited.
169 Thus it's unlikely that your language uses it.  You need to tell Vim you want
170 to use Unicode, and how to handle interfacing with the rest of the system.
171    Let's start with the GUI version of Vim, which is able to display Unicode
172 characters.  This should work: >
174         :set encoding=utf-8
175         :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
177 The 'encoding' option tells Vim the encoding of the characters that you use.
178 This applies to the text in buffers (files you are editing), registers, Vim
179 script files, etc.  You can regard 'encoding' as the setting for the internals
180 of Vim.
181    This example assumes you have this font on your system.  The name in the
182 example is for the X Window System.  This font is in a package that is used to
183 enhance xterm with Unicode support.  If you don't have this font, you might
184 find it here:
186         http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~
188 For MS-Windows, some fonts have a limited number of Unicode characters.  Try
189 using the "Courier New" font.  You can use the Edit/Select Font... menu to
190 select and try out the fonts available.  Only fixed-width fonts can be used
191 though.  Example: >
193         :set guifont=courier_new:h12
195 If it doesn't work well, try getting a fontpack.  If Microsoft didn't move it,
196 you can find it here:
198         http://www.microsoft.com/typography/fonts/default.aspx ~
200 Now you have told Vim to use Unicode internally and display text with a
201 Unicode font.  Typed characters still arrive in the encoding of your original
202 language.  This requires converting them to Unicode.  Tell Vim the language
203 from which to convert with the 'termencoding' option.  You can do it like
204 this: >
206         :let &termencoding = &encoding
207         :set encoding=utf-8
209 This assigns the old value of 'encoding' to 'termencoding' before setting
210 'encoding' to utf-8.  You will have to try out if this really works for your
211 setup.  It should work especially well when using an input method for an Asian
212 language, and you want to edit Unicode text.
215 USING UNICODE IN A UNICODE TERMINAL
217 There are terminals that support Unicode directly.  The standard xterm that
218 comes with XFree86 is one of them.  Let's use that as an example.
219    First of all, the xterm must have been compiled with Unicode support.  See
220 |UTF8-xterm| how to check that and how to compile it when needed.
221    Start the xterm with the "-u8" argument.  You might also need so specify a
222 font.  Example: >
224    xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
226 Now you can run Vim inside this terminal.  Set 'encoding' to "utf-8" as
227 before.  That's all.
230 USING UNICODE IN AN ORDINARY TERMINAL
232 Suppose you want to work with Unicode files, but don't have a terminal with
233 Unicode support.  You can do this with Vim, although characters that are not
234 supported by the terminal will not be displayed.  The layout of the text
235 will be preserved.  >
237         :let &termencoding = &encoding
238         :set encoding=utf-8
240 This is the same as what was used for the GUI.  But it works differently: Vim
241 will convert the displayed text before sending it to the terminal.  That
242 avoids that the display is messed up with strange characters.
243    For this to work the conversion between 'termencoding' and 'encoding' must
244 be possible.  Vim will convert from latin1 to Unicode, thus that always works.
245 For other conversions the |+iconv| feature is required.
246    Try editing a file with Unicode characters in it.  You will notice that Vim
247 will put a question mark (or underscore or some other character) in places
248 where a character should be that the terminal can't display.  Move the cursor
249 to a question mark and use this command: >
251         ga
253 Vim will display a line with the code of the character.  This gives you a hint
254 about what character it is.  You can look it up in a Unicode table.  You could
255 actually view a file that way, if you have lots of time at hand.
257         Note:
258         Since 'encoding' is used for all text inside Vim, changing it makes
259         all non-ASCII text invalid.  You will notice this when using registers
260         and the 'viminfo' file (e.g., a remembered search pattern).  It's
261         recommended to set 'encoding' in your vimrc file, and leave it alone.
263 ==============================================================================
264 *45.4*  Editing files with a different encoding
266 Suppose you have setup Vim to use Unicode, and you want to edit a file that is
267 in 16-bit Unicode.  Sounds simple, right?  Well, Vim actually uses utf-8
268 encoding internally, thus the 16-bit encoding must be converted.  Thus there
269 is a difference between the character set (Unicode) and the encoding (utf-8 or
270 16-bit).
271    Vim will try to detect what kind of file you are editing.  It uses the
272 encoding names in the 'fileencodings' option.  When using Unicode, the default
273 value is: "ucs-bom,utf-8,latin1".  This means that Vim checks the file to see
274 if it's one of these encodings:
276         ucs-bom         File must start with a Byte Order Mark (BOM).  This
277                         allows detection of 16-bit, 32-bit and utf-8 Unicode
278                         encodings.
279         utf-8           utf-8 Unicode.  This is rejected when a sequence of
280                         bytes is illegal in utf-8.
281         latin1          The good old 8-bit encoding.  Always works.
283 When you start editing that 16-bit Unicode file, and it has a BOM, Vim will
284 detect this and convert the file to utf-8 when reading it.  The 'fileencoding'
285 option (without s at the end) is set to the detected value.  In this case it
286 is "ucs-2le".  That means it's Unicode, two bytes and little-endian.  This
287 file format is common on MS-Windows (e.g., for registry files).
288    When writing the file, Vim will compare 'fileencoding' with 'encoding'.  If
289 they are different, the text will be converted.
290    An empty value for 'fileencoding' means that no conversion is to be done.
291 Thus the text is assumed to be encoded with 'encoding'.
293 If the default 'fileencodings' value is not good for you, set it to the
294 encodings you want Vim to try.  Only when a value is found to be invalid will
295 the next one be used.  Putting "latin1" first doesn't work, because it is
296 never illegal.  An example, to fall back to Japanese when the file doesn't
297 have a BOM and isn't utf-8: >
299         :set fileencodings=ucs-bom,utf-8,sjis
301 See |encoding-values| for suggested values.  Other values may work as well.
302 This depends on the conversion available.
305 FORCING AN ENCODING
307 If the automatic detection doesn't work you must tell Vim what encoding the
308 file is.  Example: >
310         :edit ++enc=koi8-r russian.txt
312 The "++enc" part specifies the name of the encoding to be used for this file
313 only.  Vim will convert the file from the specified encoding, Russian in this
314 example, to 'encoding'.  'fileencoding' will also be set to the specified
315 encoding, so that the reverse conversion can be done when writing the file.
316    The same argument can be used when writing the file.  This way you can
317 actually use Vim to convert a file.  Example: >
319         :write ++enc=utf-8 russian.txt
321         Note:
322         Conversion may result in lost characters.  Conversion from an encoding
323         to Unicode and back is mostly free of this problem, unless there are
324         illegal characters.  Conversion from Unicode to other encodings often
325         loses information when there was more than one language in the file.
327 ==============================================================================
328 *45.5*  Entering language text
330 Computer keyboards don't have much more than a hundred keys.  Some languages
331 have thousands of characters, Unicode has ten thousands.  So how do you type
332 these characters?
333    First of all, when you don't use too many of the special characters, you
334 can use digraphs.  This was already explained in |24.9|.
335    When you use a language that uses many more characters than keys on your
336 keyboard, you will want to use an Input Method (IM).  This requires learning
337 the translation from typed keys to resulting character.  When you need an IM
338 you probably already have one on your system.  It should work with Vim like
339 with other programs.  For details see |mbyte-XIM| for the X Window system and
340 |mbyte-IME| for MS-Windows.
343 KEYMAPS
345 For some languages the character set is different from latin, but uses a
346 similar number of characters.  It's possible to map keys to characters.  Vim
347 uses keymaps for this.
348    Suppose you want to type Hebrew.  You can load the keymap like this: >
350         :set keymap=hebrew
352 Vim will try to find a keymap file for you.  This depends on the value of
353 'encoding'.  If no matching file was found, you will get an error message.
355 Now you can type Hebrew in Insert mode.  In Normal mode, and when typing a ":"
356 command, Vim automatically switches to English.  You can use this command to
357 switch between Hebrew and English: >
359         CTRL-^
361 This only works in Insert mode and Command-line mode.  In Normal mode it does
362 something completely different (jumps to alternate file).
363    The usage of the keymap is indicated in the mode message, if you have the
364 'showmode' option set.  In the GUI Vim will indicate the usage of keymaps with
365 a different cursor color.
366    You can also change the usage of the keymap with the 'iminsert' and
367 'imsearch' options.
369 To see the list of mappings, use this command: >
371         :lmap
373 To find out which keymap files are available, in the GUI you can use the
374 Edit/Keymap menu.  Otherwise you can use this command: >
376         :echo globpath(&rtp, "keymap/*.vim")
379 DO-IT-YOURSELF KEYMAPS
381 You can create your own keymap file.  It's not very difficult.  Start with
382 a keymap file that is similar to the language you want to use.  Copy it to the
383 "keymap" directory in your runtime directory.  For example, for Unix, you
384 would use the directory "~/.vim/keymap".
385    The name of the keymap file must look like this:
387         keymap/{name}.vim ~
389         keymap/{name}_{encoding}.vim ~
391 {name} is the name of the keymap.  Chose a name that is obvious, but different
392 from existing keymaps (unless you want to replace an existing keymap file).
393 {name} cannot contain an underscore.  Optionally, add the encoding used after
394 an underscore.  Examples:
396         keymap/hebrew.vim ~
397         keymap/hebrew_utf-8.vim ~
399 The contents of the file should be self-explanatory.  Look at a few of the
400 keymaps that are distributed with Vim.  For the details, see |mbyte-keymap|.
403 LAST RESORT
405 If all other methods fail, you can enter any character with CTRL-V:
407         encoding   type                 range ~
408         8-bit      CTRL-V 123           decimal 0-255
409         8-bit      CTRL-V x a1          hexadecimal 00-ff
410         16-bit     CTRL-V u 013b        hexadecimal 0000-ffff
411         31-bit     CTRL-V U 001303a4    hexadecimal 00000000-7fffffff
413 Don't type the spaces.  See |i_CTRL-V_digit| for the details.
415 ==============================================================================
417 Next chapter: |usr_90.txt|  Installing Vim
419 Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl: