Привет всем, сегодня посмотрим, что нам предлагает Вим в области арабского языка. Мы уже обсуждали поддержку сложных видов письменности. В частности, см. заметки про ввод текстов на различных алфавитах и — отдельно — работа с ивритом. Особенность иврита — письмо справа налево и большое количество огласовок (значков под и над буквами, которые обозначают гласные или варианты произношения согласных). Однако иврит весьма прост в сравнении с арабским языком.
Должен заметить, что иврит я немного знаю, так что могу говорить компетентно, а вот арабского не знаю совсем, только немножко про этот язык. Однако постараюсь быть полезен всем русскоязычным ценителям Вим, изучающим арабский язык или владеющих им.
Еще замечу, что арабская письменность используется не только арабским языком, но и некоторыми другими, и есть какие-то отличия. Поддержка фарси, например, в Виме отдельная, но о ней в другой раз.
Поддержка арабского в Виме довольно внушительна, вплоть до того, что Вим должен быть собран с ключом +arabic (но, скорее всего, у вас именно такой). И вы имеете возможность набирать и редактировать тексты на арабском прямо сейчас, независимо от поддержки письма справа налево в вашей системе и наличия в ней арабской раскладки. Уже имеете! Разве это не прекрасно?
Давайте начнем с проблем арабской письменности. Во-первых, направление справа налево. Как и в иврите. При этом числа идут слева направо: по мере набора числа оно отъезжает влево, а курсор топчется на месте. То есть 42 вы наберете именно как 4 и 2, тут все нормально.
Во-вторых, многие буквы арабского имеют по нескольку начертаний в зависимости от положения в слове (первая, последняя, в середине и отдельно стоящая) и нужно либо несколько клавиш на букву, либо чтобы редактор сам заменял символ на нужный (что желательно, если это возможно). Вот пример:
ﺐﺸﺑ ﺶﺒﺷ ﺐﺷ ﺶﺑ ( ﺏ ﺵ )
Видите две буквы в скобках? Это буквы на клавишах f и a (по-видимому, бе и шин). Справа они же в сочетаниях fa af afa faf ("слова" справа налево).
Кстати, в редакторе Дзена это выглядит не так, как в Виме, и я не знаю, где правильнее. Если кто понимающий, прошу сообщить.
В-третьих, огласовки: точечки для маркировки гласных. В арабском они называются "харакат". Надо иметь возможность поместить один символ над другим или один символ в другой. Наконец, нужны шрифты (но они, скорее всего, у вас есть). Если нет, см. в справке Вим (help arabic), где их найти и как поставить. Кстати, консольная версия поддерживает арабский лучше, чем графическая.
Кодировку надо обязательно юникодную: set encoding=utf8. По умолчанию она latin1. Лучше делать это из .vimrc
Можно указать ключ -A при запуске Вим, включив всю поддержку арабского. Либо из Вим выставьте флаг arabic (set arabic)
Мы будем исходить из того, что ваш терминал не поддерживает двунаправленность текста (при этом сброшен флаг termbidi в Вим, проверить можно так: set termbidi?). Если поддерживает, от Вима мало что надо: только раскладку символов.
Если не поддерживает, то set arabic делает следующее:
Включает раскладку keymap=arabic. Переход на латиницу как обычно: <C-^>
Выставляет флаг delcombine, позволяя удалять комбинирующие символы с базового символа. Так, <BS> или x не удалят символ с огласовкой, а удалят только огласовку.
Включает режим справа налево (флаг rightleft)
Активирует режим замены символов (флаг arabicshape). Это самая магическая штука)) Даже мне видно, что Вим заменяет одни символы на другие по мере набора "текста", создавая красивую вязь. Например, вот буквы по-отдельности (ﺽ ﻕ ﻍ ﺵ ), а вот они же слитно: ﺾﻘﻐﺷ.. Это просто первые попавшиеся буквы! Если вдруг случайно что-то получилось, это случайно!
Раскладка в Вим стандартная микрософтовская. Вы можете сделать свою, создав файл keymap, если вам хочется. Но включать ее придется самому.
В справке (help arabic) есть карта раскладки на случай, если у вас не подписаны клавиши. Там есть все буквы, естественно, но есть и харакат, и дополнительные символы вроде хамзы. Может, тут нечему удивляться, но в стандартной клавиатуре иврита огласовок, например, нет. А в Виме есть.
Описана одна проблема с визуальным представлением символов, и она связана с огласовкой: если поставить огласовку (харака) после лям (ﻝ) и затем поставить алиф (ﺍ), то выглядеть будет неправильно.
Удачи, арабисты!