2017-03-21 09:08:19 -07:00
|
|
|
|
*arabic.txt* Nvim
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VIM REFERENCE MANUAL by Nadim Shaikli
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Arabic Language support (options & mappings) for Vim *Arabic*
|
|
|
|
|
|
|
|
|
|
These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org>
|
|
|
|
|
|
|
|
|
|
It is best to view this file with these settings within VIM's GUI: >
|
|
|
|
|
|
|
|
|
|
:set encoding=utf-8
|
|
|
|
|
:set arabicshape
|
|
|
|
|
|
|
|
|
|
|
2022-10-18 07:18:44 -07:00
|
|
|
|
------------------------------------------------------------------------------
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Introduction
|
2022-10-18 07:18:44 -07:00
|
|
|
|
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Arabic is a rather demanding language in which a number of special
|
|
|
|
|
features are required. Characters are right-to-left oriented and
|
|
|
|
|
ought to appear as such on the screen (i.e. from right to left).
|
|
|
|
|
Arabic also requires shaping of its characters, meaning the same
|
|
|
|
|
character has a different visual form based on its relative location
|
|
|
|
|
within a word (initial, medial, final or stand-alone). Arabic also
|
|
|
|
|
requires two different forms of combining and the ability, in
|
|
|
|
|
certain instances, to either superimpose up to two characters on top
|
|
|
|
|
of another (composing) or the actual substitution of two characters
|
|
|
|
|
into one (combining). Lastly, to display Arabic properly one will
|
|
|
|
|
require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also
|
|
|
|
|
require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are
|
|
|
|
|
subsets within a so-called ISO-10646-1 font.
|
|
|
|
|
|
|
|
|
|
The commands, prompts and help files are not in Arabic, therefore
|
|
|
|
|
the user interface remains the standard Vi interface.
|
|
|
|
|
|
|
|
|
|
|
2022-10-18 07:18:44 -07:00
|
|
|
|
------------------------------------------------------------------------------
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Highlights
|
2022-10-18 07:18:44 -07:00
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
o Editing left-to-right files as in the original Vim hasn't changed.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
o No special terminal with right-to-left capabilities is required.
|
|
|
|
|
The right-to-left changes are completely hardware independent.
|
|
|
|
|
Only Arabic fonts are necessary.
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
o Compatible with the original Vim. Almost all features work in
|
2014-07-10 21:05:51 -07:00
|
|
|
|
right-to-left mode (there are liable to be bugs).
|
|
|
|
|
|
|
|
|
|
o Changing keyboard mapping and reverse insert modes using a single
|
|
|
|
|
command.
|
|
|
|
|
|
|
|
|
|
o Toggling complete Arabic support via a single command.
|
|
|
|
|
|
|
|
|
|
o While in Arabic mode, numbers are entered from left to right. Upon
|
|
|
|
|
entering a none number character, that character will be inserted
|
|
|
|
|
just into the left of the last number.
|
|
|
|
|
|
|
|
|
|
o Arabic keymapping on the command line in reverse insert mode.
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
o Proper Bidirectional functionality is possible given Vim is
|
2014-07-10 21:05:51 -07:00
|
|
|
|
started within a Bidi capable terminal emulator.
|
|
|
|
|
|
|
|
|
|
|
2022-10-18 07:18:44 -07:00
|
|
|
|
------------------------------------------------------------------------------
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Arabic Fonts *arabicfonts*
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
Vim requires monospaced fonts of which there are many out there.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
|
|
|
|
|
(without Form-B, Arabic will _NOT_ be usable). It is highly
|
|
|
|
|
recommended that users search for so-called 'ISO-10646-1' fonts.
|
|
|
|
|
Do an Internet search or check www.arabeyes.org for further
|
2021-04-29 05:54:38 -07:00
|
|
|
|
info on where to obtain the necessary Arabic fonts.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
|
2022-10-18 07:18:44 -07:00
|
|
|
|
------------------------------------------------------------------------------
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Font Installation
|
|
|
|
|
|
|
|
|
|
o Installation of fonts for X Window systems (Unix/Linux)
|
|
|
|
|
|
|
|
|
|
Depending on your system, copy your_ARABIC_FONT file into a
|
|
|
|
|
directory of your choice. Change to the directory containing
|
|
|
|
|
the Arabic fonts and execute the following commands:
|
|
|
|
|
|
|
|
|
|
% mkfontdir
|
|
|
|
|
% xset +fp path_name_of_arabic_fonts_directory
|
|
|
|
|
|
|
|
|
|
|
2022-10-18 07:18:44 -07:00
|
|
|
|
------------------------------------------------------------------------------
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Usage
|
2022-10-18 07:18:44 -07:00
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
Prior to the actual usage of Arabic within Vim, a number of settings
|
2014-07-10 21:05:51 -07:00
|
|
|
|
need to be accounted for and invoked.
|
|
|
|
|
|
|
|
|
|
o Setting the Arabic fonts
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
+ For Vim GUI set the 'guifont' to your_ARABIC_FONT. This is done
|
|
|
|
|
by entering the following command in the Vim window.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
>
|
|
|
|
|
:set guifont=your_ARABIC_FONT
|
|
|
|
|
<
|
|
|
|
|
NOTE: the string 'your_ARABIC_FONT' is used to denote a complete
|
|
|
|
|
font name akin to that used in Linux/Unix systems.
|
|
|
|
|
(e.g. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)
|
|
|
|
|
|
2015-10-17 07:25:53 -07:00
|
|
|
|
You can append the 'guifont' set command to your vimrc file
|
2014-07-10 21:05:51 -07:00
|
|
|
|
in order to get the same above noted results. In other words,
|
2015-10-17 07:25:53 -07:00
|
|
|
|
you can include ':set guifont=your_ARABIC_FONT' to your vimrc
|
2014-07-10 21:05:51 -07:00
|
|
|
|
file.
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
+ Under the X Window environment, you can also start Vim with
|
2014-07-10 21:05:51 -07:00
|
|
|
|
'-fn your_ARABIC_FONT' option.
|
|
|
|
|
|
|
|
|
|
o Setting the appropriate character Encoding
|
|
|
|
|
To enable the correct Arabic encoding the following command needs
|
|
|
|
|
to be appended,
|
|
|
|
|
>
|
|
|
|
|
:set encoding=utf-8
|
|
|
|
|
<
|
2021-04-29 05:54:38 -07:00
|
|
|
|
to your vimrc file (entering the command manually into your Vim
|
2014-07-10 21:05:51 -07:00
|
|
|
|
window is highly discouraged). In short, include ':set
|
2015-10-17 07:25:53 -07:00
|
|
|
|
encoding=utf-8' to your vimrc file.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
Attempts to use Arabic without UTF-8 will result the following
|
|
|
|
|
warning message,
|
|
|
|
|
|
|
|
|
|
*W17* >
|
|
|
|
|
Arabic requires UTF-8, do ':set encoding=utf-8'
|
|
|
|
|
|
|
|
|
|
o Enable Arabic settings [short-cut]
|
|
|
|
|
|
|
|
|
|
In order to simplify and streamline things, you can either invoke
|
2017-11-06 17:29:14 -07:00
|
|
|
|
Vim with the command-line option,
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
% vim -A my_utf8_arabic_file ...
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
or enable 'arabic' via the following command within Vim
|
2014-07-10 21:05:51 -07:00
|
|
|
|
>
|
|
|
|
|
:set arabic
|
|
|
|
|
<
|
|
|
|
|
The two above noted possible invocations are the preferred manner
|
|
|
|
|
in which users are instructed to proceed. Barring an enabled 'termbidi'
|
|
|
|
|
setting, both command options:
|
|
|
|
|
|
|
|
|
|
1. set the appropriate keymap
|
|
|
|
|
2. enable the deletion of a single combined pair character
|
|
|
|
|
3. enable rightleft mode
|
|
|
|
|
4. enable rightleftcmd mode (affecting the command-line)
|
|
|
|
|
5. enable arabicshape mode (do visual character alterations)
|
|
|
|
|
|
2015-10-17 07:25:53 -07:00
|
|
|
|
You may also append the command to your vimrc file and simply
|
2014-07-10 21:05:51 -07:00
|
|
|
|
include ':set arabic' to it.
|
|
|
|
|
|
|
|
|
|
You are also capable of disabling Arabic support via
|
|
|
|
|
>
|
|
|
|
|
:set noarabic
|
|
|
|
|
<
|
|
|
|
|
which resets everything that the command had enabled without touching
|
|
|
|
|
the global settings as they could affect other possible open buffers.
|
|
|
|
|
In short the 'noarabic' command,
|
|
|
|
|
|
|
|
|
|
1. resets to the alternate keymap
|
|
|
|
|
2. disables the deletion of a single combined pair character
|
|
|
|
|
3. disables rightleft mode
|
|
|
|
|
|
|
|
|
|
NOTE: the 'arabic' command takes into consideration 'termbidi' for
|
|
|
|
|
possible external bi-directional (bidi) support from the
|
|
|
|
|
terminal ("mlterm" for instance offers such support).
|
|
|
|
|
'termbidi', if available, is superior to rightleft support
|
|
|
|
|
and its support is preferred due to its level of offerings.
|
|
|
|
|
'arabic' when 'termbidi' is enabled only sets the keymap.
|
|
|
|
|
|
2021-09-09 23:48:27 -07:00
|
|
|
|
For vertical window isolation while setting 'termbidi' an LTR
|
|
|
|
|
vertical separator like "l" or "𝖨" may be used. It may also be
|
|
|
|
|
hidden by changing its color to the foreground color: >
|
|
|
|
|
:set fillchars=vert:l
|
2022-01-29 22:57:41 -07:00
|
|
|
|
:hi WinSeparator ctermbg=White
|
2021-09-09 23:48:27 -07:00
|
|
|
|
< Note that this is a workaround, not a proper solution.
|
|
|
|
|
|
2014-07-10 21:05:51 -07:00
|
|
|
|
If, on the other hand, you'd like to be verbose and explicit and
|
|
|
|
|
are opting not to use the 'arabic' short-cut command, here's what
|
|
|
|
|
is needed (i.e. if you use ':set arabic' you can skip this section) -
|
|
|
|
|
|
|
|
|
|
+ Arabic Keymapping Activation
|
|
|
|
|
|
|
|
|
|
To activate the Arabic keymap (i.e. to remap your English/Latin
|
|
|
|
|
keyboard to look-n-feel like a standard Arabic one), set the
|
|
|
|
|
'keymap' command to "arabic". This is done by entering
|
|
|
|
|
>
|
|
|
|
|
:set keymap=arabic
|
|
|
|
|
<
|
|
|
|
|
in your VIM window. You can also append the 'keymap' set command to
|
2015-10-17 07:25:53 -07:00
|
|
|
|
your vimrc file. In other words, you can include ':set keymap=arabic'
|
|
|
|
|
to your vimrc file.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
To turn toggle (or switch) your keymapping between Arabic and the
|
|
|
|
|
default mapping (English), it is advised that users use the 'CTRL-^'
|
|
|
|
|
key press while in insert (or add/replace) mode. The command-line
|
|
|
|
|
will display your current mapping by displaying an "Arabic" string
|
|
|
|
|
next to your insertion mode (e.g. -- INSERT Arabic --) indicating
|
|
|
|
|
your current keymap.
|
|
|
|
|
|
|
|
|
|
+ Arabic deletion of a combined pair character
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
By default Vim has the 'delcombine' option disabled. This option
|
2014-07-10 21:05:51 -07:00
|
|
|
|
allows the deletion of ALEF in a LAM_ALEF (LAA) combined character
|
|
|
|
|
and still retain the LAM (i.e. it reverts to treating the combined
|
|
|
|
|
character as its natural two characters form -- this also pertains
|
|
|
|
|
to harakat and their combined forms). You can enable this option
|
|
|
|
|
by entering
|
|
|
|
|
>
|
|
|
|
|
:set delcombine
|
|
|
|
|
<
|
|
|
|
|
in our VIM window. You can also append the 'delcombine' set command
|
2015-10-17 07:25:53 -07:00
|
|
|
|
to your vimrc file. In other words, you can include ':set delcombine'
|
|
|
|
|
to your vimrc file.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
+ Arabic right-to-left Mode
|
|
|
|
|
|
|
|
|
|
By default VIM starts in Left-to-right mode. 'rightleft' is the
|
|
|
|
|
command that allows one to alter a window's orientation - that can
|
|
|
|
|
be accomplished via,
|
|
|
|
|
|
|
|
|
|
- Toggling between left-to-right and right-to-left modes is
|
|
|
|
|
accomplished through ':set rightleft' and ':set norightleft'.
|
|
|
|
|
|
|
|
|
|
- While in Left-to-right mode, enter ':set rl' in the command line
|
|
|
|
|
('rl' is the abbreviation for rightleft).
|
|
|
|
|
|
2023-07-25 05:07:13 -07:00
|
|
|
|
- Put the ':set rl' line in your vimrc file to start Vim in
|
2015-10-17 07:25:53 -07:00
|
|
|
|
right-to-left mode permanently.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
+ Arabic right-to-left command-line Mode
|
|
|
|
|
|
|
|
|
|
For certain commands the editing can be done in right-to-left mode.
|
|
|
|
|
Currently this is only applicable to search commands.
|
|
|
|
|
|
|
|
|
|
This is controlled with the 'rightleftcmd' option. The default is
|
|
|
|
|
"search", which means that windows in which 'rightleft' is set will
|
|
|
|
|
edit search commands in right-left mode. To disable this behavior,
|
|
|
|
|
>
|
|
|
|
|
:set rightleftcmd=
|
|
|
|
|
<
|
|
|
|
|
To enable right-left editing of search commands again,
|
|
|
|
|
>
|
|
|
|
|
:set rightleftcmd&
|
|
|
|
|
<
|
|
|
|
|
+ Arabic Shaping Mode
|
|
|
|
|
|
|
|
|
|
To activate the required visual characters alterations (shaping,
|
|
|
|
|
composing, combining) which the Arabic language requires, enable
|
|
|
|
|
the 'arabicshape' command. This is done by entering
|
|
|
|
|
>
|
|
|
|
|
:set arabicshape
|
|
|
|
|
<
|
|
|
|
|
in our VIM window. You can also append the 'arabicshape' set
|
2015-10-17 07:25:53 -07:00
|
|
|
|
command to your vimrc file. In other words, you can include
|
|
|
|
|
':set arabicshape' to your vimrc file.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
|
2022-10-18 07:18:44 -07:00
|
|
|
|
------------------------------------------------------------------------------
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Keymap/Keyboard *arabickeymap*
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
The character/letter encoding used in Vim is the standard UTF-8.
|
2014-07-10 21:05:51 -07:00
|
|
|
|
It is widely discouraged that any other encoding be used or even
|
|
|
|
|
attempted.
|
|
|
|
|
|
|
|
|
|
Note: UTF-8 is an all encompassing encoding and as such is
|
|
|
|
|
the only supported (and encouraged) encoding with
|
|
|
|
|
regard to Arabic (all other proprietary encodings
|
|
|
|
|
should be discouraged and frowned upon).
|
|
|
|
|
|
|
|
|
|
o Keyboard
|
|
|
|
|
|
|
|
|
|
+ CTRL-^ in insert/replace mode toggles between Arabic/Latin mode
|
|
|
|
|
|
|
|
|
|
+ Keyboard mapping is based on the Microsoft's Arabic keymap (the
|
2022-10-18 07:18:44 -07:00
|
|
|
|
de facto standard in the Arab world): >
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
|
|
|
|
+---------------------------------------------------------------------+
|
|
|
|
|
|! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ |
|
|
|
|
|
|1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ |
|
|
|
|
|
+---------------------------------------------------------------------+
|
|
|
|
|
|Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > |
|
|
|
|
|
|q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" |
|
|
|
|
|
|a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط |
|
|
|
|
|
+------------------------------------------------------+
|
|
|
|
|
|Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ |
|
|
|
|
|
|z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ |
|
|
|
|
|
+-------------------------------------------------+
|
2022-10-18 07:18:44 -07:00
|
|
|
|
<
|
2014-07-10 21:05:51 -07:00
|
|
|
|
|
2022-10-18 07:18:44 -07:00
|
|
|
|
------------------------------------------------------------------------------
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Restrictions
|
|
|
|
|
|
2017-11-06 17:29:14 -07:00
|
|
|
|
o Vim in its GUI form does not currently support Bi-directionality
|
2014-07-10 21:05:51 -07:00
|
|
|
|
(i.e. the ability to see both Arabic and Latin intermixed within
|
|
|
|
|
the same line).
|
|
|
|
|
|
|
|
|
|
|
2022-10-18 07:18:44 -07:00
|
|
|
|
------------------------------------------------------------------------------
|
2014-07-10 21:05:51 -07:00
|
|
|
|
Known Bugs
|
|
|
|
|
|
|
|
|
|
There is one known minor bug,
|
|
|
|
|
|
|
|
|
|
1. If you insert a haraka (e.g. Fatha (U+064E)) after a LAM (U+0644)
|
|
|
|
|
and then insert an ALEF (U+0627), the appropriate combining will
|
|
|
|
|
not happen due to the sandwiched haraka resulting in something
|
|
|
|
|
that will NOT be displayed correctly.
|
|
|
|
|
|
|
|
|
|
WORK-AROUND: Don't include harakats between LAM and ALEF combos.
|
|
|
|
|
In general, don't anticipate to see correct visual
|
|
|
|
|
representation with regard to harakats and LAM+ALEF
|
|
|
|
|
combined characters (even those entered after both
|
|
|
|
|
characters). The problem noted is strictly a visual
|
|
|
|
|
one, meaning saving such a file will contain all the
|
|
|
|
|
appropriate info/encodings - nothing is lost.
|
|
|
|
|
|
|
|
|
|
No other bugs are known to exist.
|
|
|
|
|
|
2018-10-29 01:50:39 -07:00
|
|
|
|
vim:tw=78:ts=8:noet:ft=help:norl:
|