Mercurial > vim
annotate runtime/doc/usr_45.txt @ 4311:8e1d1da398b3 v7.3.905
updated for version 7.3.905
Problem: Crash when writing viminfo. (Ron Aaron)
Solution: Prevent freed history info to be used.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Mon, 15 Apr 2013 22:22:57 +0200 |
parents | 073ff46fe397 |
children | 6ec6b7ff2d43 |
rev | line source |
---|---|
2572
ee53a39d5896
Last changes for the 7.3 release!
Bram Moolenaar <bram@vim.org>
parents:
2561
diff
changeset
|
1 *usr_45.txt* For Vim version 7.3. Last change: 2008 Nov 15 |
7 | 2 |
3 VIM USER MANUAL - by Bram Moolenaar | |
4 | |
5 Select your language | |
6 | |
7 | |
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. | |
11 | |
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 | |
17 | |
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| | |
21 | |
22 ============================================================================== | |
23 *45.1* Language for Messages | |
24 | |
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: > | |
29 | |
30 :language | |
31 | |
32 If it replies with "C", this means the default is being used, which is | |
33 English. | |
34 | |
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. | |
41 | |
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: > | |
47 | |
48 env LANG=de_DE.ISO_8859-1 vim | |
49 | |
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: > | |
54 | |
55 :language fr_FR.ISO_8859-1 | |
56 | |
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. | |
67 | |
68 You can also set the language separately for messages, edited text and the | |
69 time format. See |:language|. | |
70 | |
71 | |
72 DO-IT-YOURSELF MESSAGE TRANSLATION | |
73 | |
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. | |
84 | |
85 ============================================================================== | |
86 *45.2* Language for Menus | |
87 | |
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: > | |
96 | |
97 :set langmenu=none | |
98 | |
99 It is also possible to specify a language: > | |
100 | |
101 :set langmenu=nl_NL.ISO_8859-1 | |
102 | |
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: > | |
110 | |
111 :source $VIMRUNTIME/delmenu.vim | |
112 :set langmenu=de_DE.ISO_8859-1 | |
113 :source $VIMRUNTIME/menu.vim | |
114 | |
115 There is one drawback: All menus that you defined yourself will be gone. You | |
116 will need to redefine them as well. | |
117 | |
118 | |
119 DO-IT-YOURSELF MENU TRANSLATION | |
120 | |
121 To see which menu translations are available, look in this directory: | |
122 | |
123 $VIMRUNTIME/lang ~ | |
124 | |
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: > | |
132 | |
133 :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim | |
134 | |
135 You will find hints for the translation in "$VIMRUNTIME/lang/README.txt". | |
136 | |
137 ============================================================================== | |
138 *45.3* Using another encoding | |
139 | |
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. | |
155 | |
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. | |
161 | |
162 | |
163 USING UNICODE IN THE GUI | |
164 | |
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: > | |
173 | |
174 :set encoding=utf-8 | |
175 :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 | |
176 | |
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: | |
185 | |
186 http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~ | |
187 | |
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: > | |
192 | |
193 :set guifont=courier_new:h12 | |
194 | |
195 If it doesn't work well, try getting a fontpack. If Microsoft didn't move it, | |
196 you can find it here: | |
197 | |
1618 | 198 http://www.microsoft.com/typography/fonts/default.aspx ~ |
7 | 199 |
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: > | |
205 | |
206 :let &termencoding = &encoding | |
207 :set encoding=utf-8 | |
208 | |
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. | |
213 | |
214 | |
215 USING UNICODE IN A UNICODE TERMINAL | |
216 | |
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: > | |
223 | |
224 xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 | |
225 | |
226 Now you can run Vim inside this terminal. Set 'encoding' to "utf-8" as | |
227 before. That's all. | |
228 | |
229 | |
230 USING UNICODE IN AN ORDINARY TERMINAL | |
231 | |
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. > | |
236 | |
237 :let &termencoding = &encoding | |
238 :set encoding=utf-8 | |
239 | |
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: > | |
250 | |
251 ga | |
252 | |
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. | |
256 | |
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. | |
262 | |
263 ============================================================================== | |
264 *45.4* Editing files with a different encoding | |
265 | |
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 | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
268 encoding internally, thus the 16-bit encoding must be converted, since there |
7 | 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: | |
275 | |
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. | |
282 | |
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 | |
2033
de5a43c5eedc
Update documentation files.
Bram Moolenaar <bram@zimbu.org>
parents:
1702
diff
changeset
|
286 is "utf-16le". That means it's Unicode, 16-bit and little-endian. This |
7 | 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'. | |
292 | |
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: > | |
298 | |
299 :set fileencodings=ucs-bom,utf-8,sjis | |
300 | |
301 See |encoding-values| for suggested values. Other values may work as well. | |
302 This depends on the conversion available. | |
303 | |
304 | |
305 FORCING AN ENCODING | |
306 | |
307 If the automatic detection doesn't work you must tell Vim what encoding the | |
308 file is. Example: > | |
309 | |
310 :edit ++enc=koi8-r russian.txt | |
311 | |
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: > | |
318 | |
319 :write ++enc=utf-8 russian.txt | |
320 < | |
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. | |
326 | |
327 ============================================================================== | |
328 *45.5* Entering language text | |
329 | |
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. | |
341 | |
342 | |
343 KEYMAPS | |
344 | |
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: > | |
349 | |
350 :set keymap=hebrew | |
351 | |
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. | |
354 | |
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: > | |
358 | |
359 CTRL-^ | |
360 | |
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. | |
368 | |
369 To see the list of mappings, use this command: > | |
370 | |
371 :lmap | |
372 | |
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: > | |
375 | |
376 :echo globpath(&rtp, "keymap/*.vim") | |
377 | |
378 | |
379 DO-IT-YOURSELF KEYMAPS | |
380 | |
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: | |
386 | |
387 keymap/{name}.vim ~ | |
388 or | |
389 keymap/{name}_{encoding}.vim ~ | |
390 | |
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: | |
395 | |
396 keymap/hebrew.vim ~ | |
397 keymap/hebrew_utf-8.vim ~ | |
398 | |
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|. | |
401 | |
402 | |
403 LAST RESORT | |
404 | |
405 If all other methods fail, you can enter any character with CTRL-V: | |
406 | |
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 | |
412 | |
413 Don't type the spaces. See |i_CTRL-V_digit| for the details. | |
414 | |
415 ============================================================================== | |
416 | |
417 Next chapter: |usr_90.txt| Installing Vim | |
418 | |
419 Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: |