125 lines
4.9 KiB
Text
125 lines
4.9 KiB
Text
|
*rileft.txt* For Vim version 7.4. Last change: 2006 Apr 24
|
||
|
|
||
|
|
||
|
VIM REFERENCE MANUAL by Avner Lottem
|
||
|
updated by Nadim Shaikli
|
||
|
|
||
|
|
||
|
Right to Left display mode for Vim *rileft*
|
||
|
|
||
|
|
||
|
These functions were originally created by Avner Lottem:
|
||
|
E-mail: alottem@iil.intel.com
|
||
|
Phone: +972-4-8307322
|
||
|
|
||
|
{Vi does not have any of these commands}
|
||
|
|
||
|
*E26*
|
||
|
{only available when compiled with the |+rightleft| feature}
|
||
|
|
||
|
|
||
|
Introduction
|
||
|
------------
|
||
|
Some languages such as Arabic, Farsi, Hebrew (among others) require the
|
||
|
ability to display their text from right-to-left. Files in those languages
|
||
|
are stored conventionally and the right-to-left requirement is only a
|
||
|
function of the display engine (per the Unicode specification). In
|
||
|
right-to-left oriented files the characters appear on the screen from
|
||
|
right to left.
|
||
|
|
||
|
Bidirectionality (or bidi for short) is what Unicode offers as a full
|
||
|
solution to these languages. Bidi offers the user the ability to view
|
||
|
both right-to-left as well as left-to-right text properly at the same time
|
||
|
within the same window. Vim currently, due to simplicity, does not offer
|
||
|
bidi and is merely opting to present a functional means to display/enter/use
|
||
|
right-to-left languages. An older hybrid solution in which direction is
|
||
|
encoded for every character (or group of characters) are not supported either
|
||
|
as this kind of support is out of the scope of a simple addition to an
|
||
|
existing editor (and it's not sanctioned by Unicode either).
|
||
|
|
||
|
|
||
|
Highlights
|
||
|
----------
|
||
|
o Editing left-to-right files as in the original Vim, no change.
|
||
|
|
||
|
o Viewing and editing files in right-to-left windows. File orientation
|
||
|
is per window, so it is possible to view the same file in right-to-left
|
||
|
and left-to-right modes, simultaneously. (Useful for editing mixed files
|
||
|
in which both right-to-left and left-to-right text exist).
|
||
|
|
||
|
o Compatibility to the original Vim. Almost all features work in
|
||
|
right-to-left mode (see Bugs below).
|
||
|
|
||
|
o Backing from reverse insert mode to the correct place in the file
|
||
|
(if possible).
|
||
|
|
||
|
o No special terminal with right-to-left capabilities is required. The
|
||
|
right-to-left changes are completely hardware independent.
|
||
|
|
||
|
o Many languages use and require right-to-left support. These languages
|
||
|
can quite easily be supported given the inclusion of their required
|
||
|
keyboard mappings and some possible minor code change. Some of the
|
||
|
current supported languages include - |arabic.txt|, |farsi.txt| and
|
||
|
|hebrew.txt|.
|
||
|
|
||
|
|
||
|
Of Interest...
|
||
|
--------------
|
||
|
|
||
|
o Invocations
|
||
|
-----------
|
||
|
+ 'rightleft' ('rl') sets window orientation to right-to-left.
|
||
|
+ 'delcombine' ('deco'), boolean, if editing UTF-8 encoded languages,
|
||
|
allows one to remove a composing character which gets superimposed
|
||
|
on those that proceeded them (some languages require this).
|
||
|
+ 'rightleftcmd' ('rlc') sets the command-line within certain modes
|
||
|
(such as search) to be utilized in right-to-left orientation as well.
|
||
|
|
||
|
o Typing backwards *ins-reverse*
|
||
|
----------------
|
||
|
In lieu of using full-fledged the 'rightleft' option, one can opt for
|
||
|
reverse insertion. When the 'revins' (reverse insert) option is set,
|
||
|
inserting happens backwards. This can be used to type right-to-left
|
||
|
text. 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.
|
||
|
|
||
|
o 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' before pasting.
|
||
|
|
||
|
|
||
|
Bugs
|
||
|
----
|
||
|
o Does not handle CTRL-A and CTRL-X commands (add and subtract) correctly
|
||
|
when in rightleft window.
|
||
|
|
||
|
o Does not support reverse insert and rightleft modes on the command-line.
|
||
|
However, functionality of the editor is not reduced, because it is
|
||
|
possible to enter mappings, abbreviations and searches typed from the
|
||
|
left to the right on the command-line.
|
||
|
|
||
|
o Somewhat slower in right-to-left mode, because right-to-left motion is
|
||
|
emulated inside Vim, not by the controlling terminal.
|
||
|
|
||
|
o When the Athena GUI is used, the bottom scrollbar works in the wrong
|
||
|
direction. This is difficult to fix.
|
||
|
|
||
|
o When both 'rightleft' and 'revins' are on: 'textwidth' does not work.
|
||
|
Lines do not wrap at all; you just get a single, long line.
|
||
|
|
||
|
o There is no full bidirectionality (bidi) support.
|
||
|
|
||
|
|
||
|
vim:tw=78:ts=8:ft=help:norl:
|