| *rileft.txt* For Vim version 8.0. 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: |