*hebrew.txt*    For Vim version 7.4.  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:
