*russian.txt*   For Vim version 7.0d.  Last change: 2005 Apr 01


		  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:
