1 *usr_45.txt* For Vim version 7.1. Last change: 2006 Apr 24
3 VIM USER MANUAL - by Bram Moolenaar
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
32 If it replies with "C", this means the default is being used, which is
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
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
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
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
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
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
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:
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
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.
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: >
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
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
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
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/fontpack/default.htm ~
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
206 :let &termencoding = &encoding
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
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
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
237 :let &termencoding = &encoding
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: >
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.
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
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
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.
307 If the automatic detection doesn't work you must tell Vim what encoding the
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
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
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.
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: >
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: >
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
369 To see the list of mappings, use this command: >
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:
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:
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|.
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: