Писане на български (а също на руски, английски и др.) с Vim

За писане с азбуки, различни от латиницата, както и на технически, математически и други специални знаци и за други подобни цели Vim разполага с т. нар. „клавиатурни таблици“ (КТ, англ. keymaps). Чрез тях на отделни знаци или редици от знаци от клавиатурата се съпоставят знаци от Универсалното кодово множество Уникод (Unicode). По този начин всяка такава таблица определя виртуална клавиатура. Използването на КТ прави писането на ро̀ден или друг език независимо от наличието на инсталиран клавиатурен драйвер за такъв език в операционната система, а и от самата операционна система. КТ са и функционално по-полезни от драйверите, защото чрез КТ могат да се определят по-богати виртуални клавиатури. Освен това създаването и евентуално изменянето на КТ е напълно достъпно за всеки потребител на редактора: КТ са обикновени текстови файлове, а не програми.

За писане на български език, наред с някои допълнителни възможности, съм разработил две такива таблици, отговарящи на двете широко използвани у нас подреждания на азбуката върху клавиатурата, „БДС“ и фонетично. Понастоящем те се разпространяват стандартно с Vim. Макар и по различен начин, двете таблици дават на пишещия еднакви възможности. И двете таблици определят съответствия не само за българската азбука, а и за няколкото букви от руската азбука, които не са в българската, както и за някои препинателни и др. знаци. Те осигуряват възможност и за поставяне на ударения. Всяка от двете таблици позволява да се пише на изцяло правилен в граматично отношение български, руски и английски езици. (Наборът от знаци на стандартната клавиатура не позволява това дори за английския!)

В текстов режим на редактора клавиатурата работи или по обичайния начин, възпроизвеждайки това, което е написано на клавишите, или с използване на КТ. Преминаването от едното към другото и обратно става с клавишната комбинация Ctrl-^. Когато клавиатурата е в алтернативен режим, т.е. използва се таблица, текстовият курсор е с друг цвят. Ако в използваната таблица на дадена (обикновено къса, от два или три знака) редица е съпоставен някакъв „превод“, за да получим съответствието тази редица трябва да се изпише с много малко забавяне между частите ѝ; в противен случай получаваме съответствията на отделните клавиши, а не на редицата като цяло.

Основната част от определенията и в „БДС“, и във фонетичната КТ отговаря точно на съответните разполагания, затова не се нуждае от пояснения. По-долу са показани направените в двете КТ допълнителни определения: „бързи редици“ от два или три клавиша и съответно извежданите знаци. Например, за да напишем Ы в БДС трябва да използваме „бързата редица“ CX (латиница), което всъщност отговаря на ЪЙ, тъй като в дадения момент пишем на кирилица. Също за Ы при фонетично подреждане ще напишем ЪИ (лат. YI). Ако съответната „бърза редица“ се изпише бавно, получава се именно ЪЙ или ЪИ.

За подредба БДС
знак: Ё ё Ы « » · ± ° ¬ ¤
клавиши: E:: e:: CX ,, `` '' `. '. << >> -- --- .. ** ,. +- ^o ~~ @@ $$ %% +| ++ ||
За фонетична подредба
знак: Ё ё Ы ы Э э « » § · ± ° ¬ ¤
клавиши: E:: e:: YI yi YE ye ,, `` '' `. '. << >> !! ## -- --- .. ** ,. +- ^o ~~ @@ $$ %% +| ++ ||

Забележки.

  • В руската азбука има точно три букви, всяка като главна и малка, които нашата азбука няма: Ё ё, Ы ы и Э э. В подредбата „БДС“, кой знае защо, са предвидени Ё, ё и Ы, а другите три отсъстват. Клавиатурната таблица за Vim поправя този пропуск.
  • Подредбата „БДС“ включва и използваните у нас и другаде в Европа, но не в Обединените Щати (което е правилният превод на United States) § и . Никое от изброените не присъства във фонетичното подреждане – то съдържа само българската азбука. Съответната на фонетичното подреждане КТ за Vim задава свои, „нестандартни“ съответствия за тези букви и знаци.
  • Останалите знаци са за поставяне на кавички, тирета, многоточие, обозначения за валута и пр. Например кавичките в българския език се пишат „така“, а в някои случаи се използват т.нар. горни запетаи (’…’). Следва да различаваме тире () от чертица или малко тире (-); второто е представено непосредствено на клавиатурата, а първото, чрез коя да е от двете КТ, задаваме с --. Кавичките в руския език са « и »). В английския граматически правилните двойки кавички са ‘ ’ и “ ” (обърнете внимание, че никой от тези четири знака не присъства непосредствено на клавиатурата и че " не е знак за кавички в никой език). Също в английския се използва и дългото тире, което, както е ясно от по-горе, във Vim можем да напишем с ---. Споменатите знаци се използват и в някои други езици.

Която и от двете КТ за български език да използваме, ударение можем да поставим с помощта на „бързата редица“ ^`, която набираме непосредствено след (в текста, не във времето) съответната гласна. За пълнота присъства и ударението в руския език (дясно) – то се поставя с помощта на редицата ^'.

Конфигурационният файл vimrc задава фонетичната таблица като подразбираща се. Можем да изберем „БДС“ за такава, като преместим коментарния знак " в този файл от …bds на …phonetic. С помощта на командите
            :set keymap=bulgarian-bds  и
            :set keymap=bulgarian-phonetic,
можем да избираме коя таблица да ползваме и по време на работа с редактора.

Включените допълнително, наред с азбуката, знаци в двете КТ са всички от т.нар. „кодова страница cp1251, която у нас е засега най-широко използваното представяне на кирилица. (Предполага се в бъдеще все повече да се използват не кодови страници, а споменатото универсално кодово множество – Уникод, което вмества всички „страници“, азбуки, математическа и техническа писменост и др.) Буквите с ударения обаче за съжаление не са в cp1251.

(Горното не означава, че вместо ударената гласна ѝ можем да използваме съгласната й – нелепа, безотговорна и много неграмотна практика, за съжаление напоследък широко разпространена. Ако не можем да използваме ѝ, заради несъвместимост с cp1251 или друга причина, много по-приемливо е да поставим на негово място просто и.)

Представеният в cp1251 текст би трябвало да се „разбира“ без трудности от всяка четяща текст програма у нас. Немалко програми разбират и Уникод, но тъй като (засега) той не се подразбира, за правилното прочитане на такъв текст от друга програма може да са нужни някои допълнителни действия. Vim може да бъде настроен така че да разпознава сам дали прочитаният от него текст е cp1251 или utf-8 (вид представяне на Уникод) и записва файла по същия начин както е прочетен. Точно това е направено в конфигурационния файл vimrc. От друга страна, Vim е настроен и (независимо от представянето на файла) да използва utf-8 като свое вътрешно представяне – така че можем да пишем без ограничения на включваните знаци. Ако обаче се опитаме да запишем текст в cp1251 или друга кодова страница, в която този текст не е представим, Vim съобщава за това и не извършва записа.

Представянето (кодирането) на файл може да се зададе изрично напр. с
            :set fenc=utf-8  или
            :set fenc=cp1251
(fenc е съкр. от file encoding).

—Б.Б.