*russian.txt*   For Vim version 7.3.  Last change: 2006 Apr 24


		  VIM REFERENCE MANUAL    by Vassily Ragosin


Russian language localization and support in Vim	   *russian* *Russian*

1. Introduction				  |russian-intro|
2. Russian keymaps			  |russian-keymap|
3. Localization				  |russian-l18n|
4. Known issues				  |russian-issues|

===============================================================================
1. Introduction							*russian-intro*

Russian language is supported perfectly well in Vim.  You can type and view
Russian text just as any other, without the need to tweak the settings.

===============================================================================
2. Russian keymaps					       *russian-keymap*

To switch between languages you can use your system native keyboard switcher,
or use one of the Russian keymaps, included in the Vim distribution.  For
example,
>
    :set keymap=russian-jcukenwin
<
In the latter case, you can switch between languages even if you do not have
system Russian keyboard or independently from a system-wide keyboard settings.
See 'keymap'.  You can also map a key to switch between keyboards, if you
choose the latter option.  See |:map|.

For your convenience, to avoid switching between keyboards, when you need to
enter Normal mode command, you can also set 'langmap' option:
>
    :set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ,
    фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz

This is in utf-8, you cannot read this if your 'encoding' is not utf-8.
You have to type this command in one line, it is wrapped for the sake of
readability.

===============================================================================
3. Localization							 *russian-l18n*

If you wish to use messages, help files, menus and other items translated to
Russian, you will need to install the RuVim Language Pack, available in
different codepages from

    http://www.sourceforge.net/projects/ruvim/

Make sure that your Vim is at least 6.2.506 and use ruvim 0.5 or later for
automatic installs.  Vim also needs to be compiled with |+gettext| feature for
user interface items translations to work.

After downloading an archive from RuVim project, unpack it into your
$VIMRUNTIME directory.  We recommend using UTF-8 archive, if your version of
Vim is compiled with |+multi_byte| feature enabled.

In order to use the Russian documentation, make sure you have set the
'helplang' option to "ru".

===============================================================================
4. Known issues						       *russian-issues*

-- If you are using Russian message translations in Win32 console, then
   you may see the output produced by "vim --help", "vim --version" commands
   and Win32 console window title appearing in a wrong codepage.  This problem
   is related to a bug in GNU gettext library and may be fixed in the future
   releases of gettext.

===============================================================================
 vim:tw=78:ts=8:ft=help:norl:
