Christian Brabandt | b4ddc6c | 2024-01-02 16:51:11 +0100 | [diff] [blame] | 1 | *rileft.txt* For Vim version 9.1. Last change: 2022 Oct 12 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 15 | *E26* |
Bram Moolenaar | db84e45 | 2010-08-15 13:50:43 +0200 | [diff] [blame] | 16 | {only available when compiled with the |+rightleft| feature} |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 17 | |
| 18 | |
| 19 | Introduction |
| 20 | ------------ |
| 21 | Some languages such as Arabic, Farsi, Hebrew (among others) require the |
| 22 | ability to display their text from right-to-left. Files in those languages |
| 23 | are stored conventionally and the right-to-left requirement is only a |
| 24 | function of the display engine (per the Unicode specification). In |
| 25 | right-to-left oriented files the characters appear on the screen from |
| 26 | right to left. |
| 27 | |
| 28 | Bidirectionality (or bidi for short) is what Unicode offers as a full |
| 29 | solution to these languages. Bidi offers the user the ability to view |
| 30 | both right-to-left as well as left-to-right text properly at the same time |
| 31 | within the same window. Vim currently, due to simplicity, does not offer |
| 32 | bidi and is merely opting to present a functional means to display/enter/use |
| 33 | right-to-left languages. An older hybrid solution in which direction is |
| 34 | encoded for every character (or group of characters) are not supported either |
| 35 | as this kind of support is out of the scope of a simple addition to an |
Bram Moolenaar | 402d2fe | 2005-04-15 21:00:38 +0000 | [diff] [blame] | 36 | existing editor (and it's not sanctioned by Unicode either). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 37 | |
Bram Moolenaar | ae906c8 | 2022-10-12 11:12:49 +0100 | [diff] [blame] | 38 | As many people working on the code do not use the right-to-left mode, this |
| 39 | feature may not work in some situations. If you can describe what is wrong |
| 40 | and how it would work when fixed, please create an issue on github, see |
| 41 | |bug-reports|. |
| 42 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 43 | |
| 44 | Highlights |
| 45 | ---------- |
| 46 | o Editing left-to-right files as in the original Vim, no change. |
| 47 | |
| 48 | o Viewing and editing files in right-to-left windows. File orientation |
| 49 | is per window, so it is possible to view the same file in right-to-left |
| 50 | and left-to-right modes, simultaneously. (Useful for editing mixed files |
| 51 | in which both right-to-left and left-to-right text exist). |
| 52 | |
| 53 | o Compatibility to the original Vim. Almost all features work in |
| 54 | right-to-left mode (see Bugs below). |
| 55 | |
| 56 | o Backing from reverse insert mode to the correct place in the file |
| 57 | (if possible). |
| 58 | |
| 59 | o No special terminal with right-to-left capabilities is required. The |
| 60 | right-to-left changes are completely hardware independent. |
| 61 | |
| 62 | o Many languages use and require right-to-left support. These languages |
| 63 | can quite easily be supported given the inclusion of their required |
| 64 | keyboard mappings and some possible minor code change. Some of the |
| 65 | current supported languages include - |arabic.txt|, |farsi.txt| and |
| 66 | |hebrew.txt|. |
| 67 | |
| 68 | |
| 69 | Of Interest... |
| 70 | -------------- |
| 71 | |
| 72 | o Invocations |
| 73 | ----------- |
| 74 | + 'rightleft' ('rl') sets window orientation to right-to-left. |
| 75 | + 'delcombine' ('deco'), boolean, if editing UTF-8 encoded languages, |
| 76 | allows one to remove a composing character which gets superimposed |
Bram Moolenaar | 2547aa9 | 2020-07-26 17:00:44 +0200 | [diff] [blame] | 77 | on those that preceded them (some languages require this). |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 78 | + 'rightleftcmd' ('rlc') sets the command-line within certain modes |
| 79 | (such as search) to be utilized in right-to-left orientation as well. |
| 80 | |
| 81 | o Typing backwards *ins-reverse* |
| 82 | ---------------- |
Bram Moolenaar | 4d8f476 | 2021-06-27 15:18:56 +0200 | [diff] [blame] | 83 | In lieu of using the full-fledged 'rightleft' option, one can opt for |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 84 | reverse insertion. When the 'revins' (reverse insert) option is set, |
| 85 | inserting happens backwards. This can be used to type right-to-left |
| 86 | text. When inserting characters the cursor is not moved and the text |
| 87 | moves rightwards. A <BS> deletes the character under the cursor. |
| 88 | CTRL-W and CTRL-U also work in the opposite direction. <BS>, CTRL-W |
| 89 | and CTRL-U do not stop at the start of insert or end of line, no matter |
| 90 | how the 'backspace' option is set. |
| 91 | |
| 92 | There is no reverse replace mode (yet). |
| 93 | |
| 94 | If the 'showmode' option is set, "-- REVERSE INSERT --" will be shown |
| 95 | in the status line when reverse Insert mode is active. |
| 96 | |
| 97 | o Pasting when in a rightleft window |
| 98 | ---------------------------------- |
| 99 | When cutting text with the mouse and pasting it in a rightleft window |
| 100 | the text will be reversed, because the characters come from the cut buffer |
| 101 | from the left to the right, while inserted in the file from the right to |
| 102 | the left. In order to avoid it, toggle 'revins' before pasting. |
| 103 | |
| 104 | |
| 105 | Bugs |
| 106 | ---- |
| 107 | o Does not handle CTRL-A and CTRL-X commands (add and subtract) correctly |
| 108 | when in rightleft window. |
| 109 | |
| 110 | o Does not support reverse insert and rightleft modes on the command-line. |
| 111 | However, functionality of the editor is not reduced, because it is |
| 112 | possible to enter mappings, abbreviations and searches typed from the |
| 113 | left to the right on the command-line. |
| 114 | |
| 115 | o Somewhat slower in right-to-left mode, because right-to-left motion is |
| 116 | emulated inside Vim, not by the controlling terminal. |
| 117 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 124 | vim:tw=78:ts=8:noet:ft=help:norl: |