Лого на страниците (малко). Система Orphus
Ако забележите грешка, маркирайте израза с мишката и натиснете Control+Enter. Благодаря!
Александър Иванов
Вашият текстов редактор
 
Един приятел веднъж ми каза: „О, Excel! Аз живея в Excel…“. Той е кардиолог, занимава се с научни изследвания, обработва големи масиви от данни и дълго време „живееше“ в Excel.
В крайна сметка му се наложи да се научи да програмира и сега май „живее“ в Matlab. Медиците с нищо не са по-подготвени от филолозите да обработват данните си и това е поучителен пример, ама е за друг разказ.
Та и аз ще кажа като него — аз „живея“ в текстовия си редактор (така наричат програмите за работа с текстови файлове).
Филологът изследовател „живее“ в текстовия си редактор.
Това е основният инструмент за филолога и той се стреми да направи „всичко“ с него. Защото голият текст е неговият изследователски материал. Вижте разясненията в Текстов файл, бинарен файл, погледнете и Добре редактиран текст.
Така че темата тук ще е: кой текстов редактор е най-подходящ за филолога глотометрист?
Основателен въпрос, защото има хиляди, да не са и десетки хиляди текстови редактори.
 
Във всички програмни езици към графичния интерфейс задължително има пример A simple editor — показва се как да направиш текстов редактор с меню File, с действия Open, Close, понякога включват и меню Edit с елементарните действия — Del, Cut, Copy, Paste. В графичния интерфейс това е нещо като Hello World в конзолния интерфейс — най-елементарният възможен пример.
Експериментирал съм с десетки, по-скоро със стотици текстови редактори. Накрая изработих прост тест, за да отхвърлям онези, които не стават:
1) Заменете всички шпации със символа за нов ред (тоест, представете текста си в списъчен вид). Ама това е от честите действия, което правим, нали?
2) Използвайте undo, за да възстановите текста.
Ако тези действия се извършват за разумно време с достатъчно голям текст — изберете някоя по-дебела книга — значи този редактор си заслужава да бъде разглеждан по-подробно. При работа „разумно време“ е не повече от 1–2 секунди. По-добре — по-малко, че „потребителят“ се оказва много нетърпелив човек.
 
Чак е удивително колко малко редактори покриват този тест.
Но ако усвоите малко програмиране на някакъв език, ще разберете, че тестът всъщност е доста драстичен — той проверява за здравина основната конструкция на редактора, не „красотите“ и „глезотиите“ му.
Какво още трябва да има в един текстов редактор, за да е удобен за глотометрични обработки?
 
Регулярни изрази
Това е „език“ за търсене и заместване в текста по някакъв по-общ шаблон. Повече разяснения давам в раздела 23. Пак търсене и заместване — регулярни изрази.
Програмистите си въобразяват, че езикът на регулярните изрази е измислен за тях, всъщност той е измислен за филолога изследовател — без него животът ни би бил доста по-труден. Така че филологът изследовател трябва да го научи този „език“. А най-лесният начин да се научи той е в редактора при оцветяване на търсения текст.
По-късно, ако започнете да програмирате, например на Python (което горещо препоръчвам), ще видите, че вграденият в Python език на регулярните изрази е малко по-различен (друг „диалект“) от този в редактора ви. Ама нови неща май няма да се налага да учите.
Много е важно след търсене и заместване с регулярни изрази командата undo да работи. Тъй де, всеки може да сбърка.
 
Макроси и препрограмиране на клавиши
При работа върху текста на филолога често му се налага многократно да извършва едни и същи действия. Това най-добре се илюстрира с картинка:
 
cream with verbs classifiers
 
Тук се вижда, че текстът е представен в списъчен вид, а изследователят очевидно поставя класификационен маркер V за лична глаголна форма, за да може по-късно да си извлече нужната количествена информация.
Изследователят обхожда текста с курсора и когато стигне до лична глаголна форма, трябва да направи следните три действия: а) да постави курсора в края на реда; б) да въведе табулатор за разделител между лексата и класификатора; в) да въведе класификатора (V).
Близко до ума е, че ще е много удобно тези три действия да се „пакетират“ в макрокоманда и да се задействат с един клавиш. Ето това в удобния за глотометриста редактор трябва да се прави лесно и бързо.
Точно това, което сега давам като пример, аз съм го направил в gtools.vim. Вярно, там съм използвал два клавиша (запетайка и v) в режим „експерт“, ама пак е същото — спестява работа и е по-удобно. Всякакви други идеи са добре дошли.
Разгледайте gtools.vim. Първо ще ви се стори съвсем неразбираем, след няколко седмици ще го четете и редактирате спокойно. Просто не се отказвайте. Малко твърдоглавие ни е необходимо дори само заради нашето удобство.
 
Повече възможности на макроезика
Идеята за „макрокомандата“, тоест да „пакетираш“ няколко команди в една, никак не е нова.
Малко по-нова е идеята в програмите да се вграждат истински програмни езици като „макроезици“, обикновено това са интерпретатори. Хич не се притеснявайте сега, ако не знаете какво е интерпретатор. Някъде по-нататък ще го обясня. (Бе най-накратко го обясних — виж Кой е този интерпретатор.)
Същественото сега е, че тези програмни езици могат да прихващат „обекти“ от програмата, в която са вградени, например, текста, който виждате в прозореца, или маркирания текст, или абзаца, в който е курсорът, и т. н. И вие може да си напишете програмка какво да се прави с такъв „обект“. Естествено, това ново действие (изпълнението на програмката) може да си го свържете с клавиш или клавишна комбинация, за да се изпълнява бързо.
Та много необходимо е текстовият редактор да има някакъв такъв „макроезик“.
В отворения код се реализира често и още една идея — да се използва като „макроезик“ външен интерпретатор, разбира се, също с отворен код. Такива интерпретаторни езици има много, ама най-често се използва май пак Python.
 
Макар и рядко тази идея се използва и в комерсиални програми, например Personal Editor 32/64, където се използва VBScript. Тази програма може да предизвика носталгия у онези, които в досово време са работили с епичния pe2 на IBM. Впрочем програмата е съвсем, съвсем съвременна и доколкото мога да съдя от демонстрационното копие, може да прави „всичко“.
 
Прилагане на външни програми
Много малко са редакторите, които могат да прилагат действието на външни програми върху редактирания текст. А това е много удобно, както съм се опитал да покажа в cream в режим „експерт“.
 
* * *
Та след лутане, търсене и разочарования, аз в крайна сметка се спрях на cream. Това не е „истински“ текстов редактор, това е надстройка върху текстовия редактор vim, по-точно върху графичната му реализация gvim. Самият cream е написан на вградения във vim макроезик — наричат този макроезик VimL или Vimscript — и има за цел да създаде по-привичен интерфейс.
Vim е наследник на редактора vi и името му е съкращение от Vi IMproved. Ама редакторът vi е написан в 1976 г. като „визуално“ допълнение към едноредовия редактор ex. Днес ни е трудно да си го представим, ама по онова време клавиатурата още не е имала дори клавиши за придвижване на курсора. И съвременният vim е наследил много „история“, та усвояването му е свързано с известно приучване и доучване.
Точно тоя проблем решава cream — всичко, което си знаете вече за редактирането на текста, работи. А като натиснете един клавиш (Esc), придобивате достъп до всичките възможности на vim. А те са много.
 
Дали не е време да разкажа нещо смешно?
Имам младо приятелче, геймър от десет-единадесетгодишна възраст, познава настройките на Windows в дълбини, та като ми потрябва нещо по-тънко за Windows, него питам.
Иска му се да учи информатика ли, мрежова администрация ли, нещо такова и ме пита какъв текстов редактор да използва. Аз, разбира се, го насочвам към cream.
Пишем си в Skype и след няколко минути получавам съобщение:
„Боже, колко е грозен!“
Признавам си, онемях. Ама все пак възвърнах си донякъде самообладанието, та да му напиша:
„Бе той и багерът е грозен, ама ако ти трябва да копаеш голяма дупка, нали няма да вземеш красивата лопатка на детето от пясъчника?“
Нито vim, нито cream са плод на културата cool&fun. Това са работни инструменти, усъвършенствани с десетилетия, та ако искате, гледайте на тях като на багер или като на пристанищен кран. Няма да сбъркате.
За да инсталирате cream в Windows, изтеглете от страницата му инсталиращата програма — това е EXE файл, който съдържа всичко необходимо. Повече трудности ще имате с настройките на другите програми — вижте 27. За Windows.
За линукс препоръчвам да инсталирате и пакета vim — като поработите в режим „експерт“, с изненада ще откриете, че се чувствате удобно и в конзолния vim. Ако сте в Ubuntu, Mint, а и в Debian, разполагате с пакет cream. Ама ви съветвам преди това да инсталирате vim-gtk или vim-gnome, защото по подразбиране се инсталира vim-athena, а това наистина е библиотека с малко архаични графични елементи.
След като инсталирате cream, идете в менюто Settings > Preferences и изберете Expert Mode… — може и да не сте експерт сега, ама скоро ще станете.
Как се добавят речници за правописна проверка, съм описал в 26. Букви и правописна проверка.
 
* * *
Не е задължително да използвате cream. Сигурно има и други начини.
Аз само не съм сигурен, че са по-удобни. Ама удобството е до голяма степен въпрос на навик, нали?
Ако настоявате да работите в Windows, пробвайте и Notepad++. Това е страхотна програма! Авторът й (Don Ho) пише още на първата й страница „I hope you enjoy Notepad++ as much as I enjoy coding it“ (тоест „Надявам се да харесате Notepad++ толкова, колкото аз харесвам да го пиша“). Дете, правено с любов — има ли нещо по-хубаво от това?
И минава „моя“ тест по вода. Ама е замислен за програмисти и някои от нещата, които са ми нужни, или не ги прави, или е сложно, или аз не знам как.
Погледнете и geany (чете се джийни). Прекрасен програмен редактор! Аз също го използвам понякога. Покрива „теста“ с разумно голям текст (например, 35 хиляди думи). После идват неприятни изненади. Ама и за нас е глупаво да работим с по-голям текст, нали. Та става, значи.
Сред програмистите става популярен и редакторът Sublime Text. Това е комерсиален продукт, трябва да си закупите лиценз, но преди това може да го изтеглите и да експериментирате с него свободно. Лицензът ви разрешава да инсталирате редактора на различни компютри и дори на различни операционни системи, което изглежда твърде разумно. Покрива „моя“ тест, макар и доста бавничко. Предимство е, че като макроезик се използва Python. Хубав програмен редактор и става за глотометрични обработки, макар че с големи текстове се затруднява.
Несправедливо ще е да прескоча и emacs. Доколкото мога да съдя от документацията и от собствените си експерименти, с него може да правите същото, което може да правите с vim. Или почти. Ама… Ама си няма cream.
И най-накрая. Почти всичко, което показвам, може да го правите без текстовия редактор. Погледнете, например, програмата sed (stream editor). Тя е достъпна навсякъде (в Windows през cygwin — погледнете 27. За Windows) и прави търсене и заместване точно както го показвам в cream. А и питонските програмки, дето ги правя в glotta, също си работят в конзолата без проблеми. Значи — всичко може да направите и без редактора.
В Практикум. Как да се работи с данните от извадката от имена на български граждани, в края, съм дал и няколко практически примери. Погледнете ги.
Та, избор имате!