*hebrew.txt*    For Vim version 7.2a.  Last change: 2007 Jun 14


	   VIM REFERENCE MANUAL    by Ron Aaron (and Avner Lottem)


Hebrew Language support (options & mapping) for Vim		*hebrew*

The supporting 'rightleft' functionality was originally created by Avner
Lottem. <alottem at gmail dot com>  Ron Aaron <ron at ronware dot org> is
currently helping support these features.

{Vi does not have any of these commands}

All this is only available when the |+rightleft| feature was enabled at
compile time.


Introduction
------------
Hebrew-specific options are 'hkmap', 'hkmapp' 'keymap'=hebrew and 'aleph'.
Hebrew-useful options are 'delcombine', 'allowrevins', 'revins', 'rightleft'
and 'rightleftcmd'.

The 'rightleft' mode reverses the display order, so characters are displayed
from right to left instead of the usual left to right.  This is useful
primarily when editing Hebrew or other Middle-Eastern languages.
See |rileft.txt| for further details.

Details
--------------
+  Options:
   +  'rightleft' ('rl') sets window orientation to right-to-left.  This means
      that the logical text 'ABC' will be displayed as 'CBA', and will start
      drawing at the right edge of the window, not the left edge.
   +  'hkmap' ('hk') sets keyboard mapping to Hebrew, in insert/replace modes.
   +  'aleph' ('al'), numeric, holds the decimal code of Aleph, for keyboard
      mapping.
   +  'hkmapp' ('hkp') sets keyboard mapping to 'phonetic hebrew'

   NOTE: these three ('hkmap', 'hkmapp' and 'aleph') are obsolete.  You should
	 use ":set keymap=hebrewp" instead.

   +  'delcombine' ('deco'), boolean, if editing UTF-8 encoded Hebrew, allows
      one to remove the niqud or te`amim by pressing 'x' on a character (with
      associated niqud).

   +  'rightleftcmd' ('rlc') makes the command-prompt for searches show up on
      the right side.  It only takes effect if the window is 'rightleft'.

+  Encoding:
   +  Under Unix, ISO 8859-8 encoding (Hebrew letters codes: 224-250).
   +  Under MS DOS, PC encoding (Hebrew letters codes: 128-154).
      These are defaults, that can be overridden using the 'aleph' option.
   +  You should prefer using UTF8, as it supports the combining-characters
      ('deco' does nothing if UTF8 encoding is not active).

+  Vim arguments:
   +  'vim -H file' starts editing a Hebrew file, i.e. 'rightleft' and 'hkmap'
      are set.

+  Keyboard:
   +  The 'allowrevins' option enables the CTRL-_ command in Insert mode and
      in Command-line mode.

   +  CTRL-_ in insert/replace modes toggles 'revins' and 'hkmap' as follows:

      When in rightleft window, 'revins' and 'nohkmap' are toggled, since
      English will likely be inserted in this case.

      When in norightleft window, 'revins' 'hkmap' are toggled, since Hebrew
      will likely be inserted in this case.

      CTRL-_ moves the cursor to the end of the typed text.

   +  CTRL-_ in command mode only toggles keyboard mapping (see Bugs below).
      This setting is independent of 'hkmap' option, which only applies to
      insert/replace mode.

      Note: On some keyboards, CTRL-_ is mapped to CTRL-?.

   +  Keyboard mapping while 'hkmap' is set (standard Israeli keyboard):

	q w e r t y u i o p
	/ ' ק ר א ט ו ן ם פ

	 a s d f g h j k l ; '
	 ש ד ג כ ע י ח ל ך ף ,

	  z x c v b n m , . /
	  ז ס ב ה נ מ צ ת ץ .

      This is also the keymap when 'keymap=hebrew' is set.  The advantage of
      'keymap' is that it works properly when using UTF8, e.g. it inserts the
      correct characters; 'hkmap' does not.  The 'keymap' keyboard can also
      insert niqud and te`amim.  To see what those mappings are,look at the
      keymap file 'hebrew.vim' etc.


Typing backwards

If the 'revins' (reverse insert) option is set, inserting happens backwards.
This can be used to type Hebrew.  When inserting characters the cursor is not
moved and the text moves rightwards.  A <BS> deletes the character under the
cursor.  CTRL-W and CTRL-U also work in the opposite direction.  <BS>, CTRL-W
and CTRL-U do not stop at the start of insert or end of line, no matter how
the 'backspace' option is set.

There is no reverse replace mode (yet).

If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown in the
status line when reverse Insert mode is active.

When the 'allowrevins' option is set, reverse Insert mode can be also entered
via CTRL-_, which has some extra functionality: First, keyboard mapping is
changed according to the window orientation -- if in a left-to-right window,
'revins' is used to enter Hebrew text, so the keyboard changes to Hebrew
('hkmap' is set); if in a right-to-left window, 'revins' is used to enter
English text, so the keyboard changes to English ('hkmap' is reset).  Second,
when exiting 'revins' via CTRL-_, the cursor moves to the end of the typed
text (if possible).


Pasting when in a rightleft window
----------------------------------
When cutting text with the mouse and pasting it in a rightleft window
the text will be reversed, because the characters come from the cut buffer
from the left to the right, while inserted in the file from the right to
the left.   In order to avoid it, toggle 'revins' (by typing CTRL-? or CTRL-_)
before pasting.


Hebrew characters and the 'isprint' variable
--------------------------------------------
Sometimes Hebrew character codes are in the non-printable range defined by
the 'isprint' variable.  For example in the Linux console, the Hebrew font
encoding starts from 128, while the default 'isprint' variable is @,161-255.
The result is that all Hebrew characters are displayed as ~x.  To solve this
problem, set isprint=@,128-255.


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