fork for IVI
[profile/ivi/vim.git] / runtime / doc / rileft.txt
1 *rileft.txt*    For Vim version 7.3.  Last change: 2006 Apr 24
2
3
4                   VIM REFERENCE MANUAL    by Avner Lottem
5                                           updated by Nadim Shaikli
6
7
8 Right to Left display mode for Vim                              *rileft*
9
10
11 These functions were originally created by Avner Lottem:
12    E-mail: alottem@iil.intel.com
13    Phone:  +972-4-8307322
14
15 {Vi does not have any of these commands}
16
17                                                                 *E26*
18 {only available when compiled with the |+rightleft| feature}
19
20
21 Introduction
22 ------------
23 Some languages such as Arabic, Farsi, Hebrew (among others) require the
24 ability to display their text from right-to-left.  Files in those languages
25 are stored conventionally and the right-to-left requirement is only a
26 function of the display engine (per the Unicode specification).  In
27 right-to-left oriented files the characters appear on the screen from
28 right to left.
29
30 Bidirectionality (or bidi for short) is what Unicode offers as a full
31 solution to these languages.  Bidi offers the user the ability to view
32 both right-to-left as well as left-to-right text properly at the same time
33 within the same window.  Vim currently, due to simplicity, does not offer
34 bidi and is merely opting to present a functional means to display/enter/use
35 right-to-left languages.  An older hybrid solution in which direction is
36 encoded for every character (or group of characters) are not supported either
37 as this kind of support is out of the scope of a simple addition to an
38 existing editor (and it's not sanctioned by Unicode either).
39
40
41 Highlights
42 ----------
43 o  Editing left-to-right files as in the original Vim, no change.
44
45 o  Viewing and editing files in right-to-left windows.  File orientation
46    is per window, so it is possible to view the same file in right-to-left
47    and left-to-right modes, simultaneously.  (Useful for editing mixed files
48    in which both right-to-left and left-to-right text exist).
49
50 o  Compatibility to the original Vim.  Almost all features work in
51    right-to-left mode (see Bugs below).
52
53 o  Backing from reverse insert mode to the correct place in the file
54    (if possible).
55
56 o  No special terminal with right-to-left capabilities is required.  The
57    right-to-left changes are completely hardware independent.
58
59 o  Many languages use and require right-to-left support.  These languages
60    can quite easily be supported given the inclusion of their required
61    keyboard mappings and some possible minor code change.  Some of the
62    current supported languages include - |arabic.txt|, |farsi.txt| and
63    |hebrew.txt|.
64
65
66 Of Interest...
67 --------------
68
69 o  Invocations
70    -----------
71    + 'rightleft' ('rl') sets window orientation to right-to-left.
72    + 'delcombine' ('deco'), boolean, if editing UTF-8 encoded languages,
73      allows one to remove a composing character which gets superimposed
74      on those that proceeded them (some languages require this).
75    + 'rightleftcmd' ('rlc') sets the command-line within certain modes
76      (such as search) to be utilized in right-to-left orientation as well.
77
78 o  Typing backwards                                     *ins-reverse*
79    ----------------
80    In lieu of using full-fledged the 'rightleft' option, one can opt for
81    reverse insertion.  When the 'revins' (reverse insert) option is set,
82    inserting happens backwards.  This can be used to type right-to-left
83    text.  When inserting characters the cursor is not moved and the text
84    moves rightwards.  A <BS> deletes the character under the cursor.
85    CTRL-W and CTRL-U also work in the opposite direction.  <BS>, CTRL-W
86    and CTRL-U do not stop at the start of insert or end of line, no matter
87    how the 'backspace' option is set.
88
89    There is no reverse replace mode (yet).
90
91    If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown
92    in the status line when reverse Insert mode is active.
93
94 o  Pasting when in a rightleft window
95    ----------------------------------
96    When cutting text with the mouse and pasting it in a rightleft window
97    the text will be reversed, because the characters come from the cut buffer
98    from the left to the right, while inserted in the file from the right to
99    the left.   In order to avoid it, toggle 'revins' before pasting.
100
101
102 Bugs
103 ----
104 o  Does not handle CTRL-A and CTRL-X commands (add and subtract) correctly
105    when in rightleft window.
106
107 o  Does not support reverse insert and rightleft modes on the command-line.
108    However, functionality of the editor is not reduced, because it is
109    possible to enter mappings, abbreviations and searches typed from the
110    left to the right on the command-line.
111
112 o  Somewhat slower in right-to-left mode, because right-to-left motion is
113    emulated inside Vim, not by the controlling terminal.
114
115 o  When the Athena GUI is used, the bottom scrollbar works in the wrong
116    direction.  This is difficult to fix.
117
118 o  When both 'rightleft' and 'revins' are on: 'textwidth' does not work.
119    Lines do not wrap at all; you just get a single, long line.
120
121 o  There is no full bidirectionality (bidi) support.
122
123
124  vim:tw=78:ts=8:ft=help:norl: