Защо използвам Vim (и защо и вие бихте искали) =================================================================== Vim е наследник на легендарния текстов редактор от средата на 70-те г. vi. Сравнен с vi, съдържа множество подобрения. Изключително популярен е сред програмистите навсякъде по света. Има реализации за всички разпространени операционни системи: Linux и др. варианти на Unix, Windows, MacOS и т.н. Всички реализации са безплатно достъпни и са еднакви по възможности и начин на използване. Vim може да работи както в текстова, така и в графична среда, а също да бъде изпълняван като команда, повиквана от друга команда (batch mode). Vim може да работи с текстови файлове с огромен размер. Зарежда ги мигновено и позволява бързо придвижване между различните им части. Vim може да работи едновременно с множество файлове, показани в участъци на екрана или намиращи се в т.нар. буфери. Vim може да бъде конфигуриран, специализиран и програмиран за специфични предпочитания и начини на употреба. За целта разполага със собствен език за програмиране, удобно организирани конфигурационни файлове и други средства. Vim разпознава вида на текстовия файл, който му се подава (според начина на завършване на редовете -- Unix/DOS/Mac), а при записване запазва или променя този вид според желанието на потребителя. Vim работи с различни ,,кодирания`` (encodings) на текст, вкл. unicode и utf-8. Vim позволява да се ползват множество езици, вкл. такива, при които се пише отдясно наляво. Vim предвижда възможност да се въвеждат непечатни знакове. Vim може да работи с файлове в двоичен (не редов, нетекстов) режим. Командите на Vim са еднообразни една с друга по отношение на избора на обекти (,,целите``), върху които действат: използват се едни и същи видове ,,цели`` при придвижване, премахване, замяна и копиране. Обекти-цели за команди на Vim могат да бъдат отделни знакове, редици от знакове, думи, редове, изречения, абзаци, раздели, програмни процедури, скобови съответствия ((), [], {}, <> или други избрани двойки), белязани места в текста или т.нар. визуално избрана област. Смисълът на повечето от споменатите понятия при желание може да бъде променян. Vim позволява ,,визуално избиране`` на области от два вида -- последователни или правоъгълни. Във Vim всички действия на потребителя допускат текстово представяне -- например дори преместването на курсора може да бъде зададено чрез буква -- и по този начин самите те могат да бъдат обект на редактиране: последователности от действия могат да бъдат запомняни, променяни, повторно проигравани и съхранявани като ,,макроопределения`` или в ,,сценарни`` файлове. Повечето ,,координатни`` аргументи на командите на Vim могат да се задават в относителен смисъл, като относителността бива няколко вида. Vim позволява на потребителя да назначава команди на един или друг клавиш и да оформя собствени менюта от команди. Vim има синтактични схеми за цветно показване на стотици езици за програмиране и файлови формати. Има и множество цветови схеми. Цветовите схеми се прилагат наред със синтактичните и се избират независимо от тях. Потребителят може да добавя схеми и от двата вида. Vim може да образува файл във формат HTML, изглеждащ точно като даден файл, когато с него работи редакторът (т.е. с оцветяване според избрани синтактична и цветова схеми). Така програма на даден език или друг текст могат да бъдат съхранени в подходящ цветен вид (за илюстрация или други цели) и разпространявани и възпроизвеждани в този вид независимо от редактора. Vim може да използва специализирани приставки (plug-ins) -- програми, които биват задействани при зареждане или записване на файл според вида на файла. Някои приставки действат по подразбиране, напр. за автоматично разуплътняване и повторно уплътняване (ungzip/gzip), когато входният файл е уплътнен. Vim може да се използва като среда за програмиране (IDE) за C/C++, Perl, Python, Tcl, (La)TeX и, с подходящо приспособяване, за всеки друг език за програмиране. Във Vim някои видове текст, напр. на C/C++, се форматират автоматично, при набирането им или с нарочна команда. Начинът на форматиране се управлява доста подробно с конфигуриращи параметри. Части от текста на редактирания с Vim файл могат да се скриват. Такива части биват избирани непосредствено или се задават като равнища на подробност (в йерархично построени текстове, като HTML, XML и др.). Характерна за Vim е възможността за повторно използване на вече зададена управляваща информация: цели, повторения и др. Редакторът автоматично запомня различни видове такава информация: последно търсене, последна промяна и мн. др. Например, след веднъж зададен низ или образец за търсене, същото търсене може да се извършва многократно. Направена промяна, дори сложно зависеща от контекста (напр. замяна на три поредни думи, средната от които отговаря на определен шаблон) може след това да бъде извършвана многократно на други места само с едно натискане на клавиш. С Vim целият текст или част от него може да се замени, като се изпрати за обработка от друга програма (напр. за специализирано форматиране). Vim разполага с множество буфери (регистри) за временно съхраняване (и копиране оттам) на текст. За търсене на текст по дадено съдържание (в команди за търсене, замяна и изтриване) се използват шаблони -- регулярни изрази, които позволяват голяма общност и гъвкавост при съпоставяне с текста. Регулярните изрази дават възможност за извършване на удивително разнообразни съпоставяния. Части от шаблон могат да бъдат белязани така, че съответните части от разпознатия текст да се използват при образуване на заменящия текст. Търсенето на текст e ,,динамично``: съответният на шаблона текст се показва още докато се формира шаблонът. Едновременно се показват всички намерени съответстия и лесно се преминава между тях. При търсене, когато се намери съответствие, курсорът може да бъде поставен не само в началото на намерения текст, но също с отместване спрямо началото или края на този текст. Когато файлът е на C или C++ търсене може да се извършва не само в текущо редактирания файл, а заедно с това и в такива, които са ,,вмъкнати`` в него (с команди #include). Също в такива случаи е възможно чрез помощни, автоматично създавани ,,индексни`` файлове (tags), определение на процедура или глобална променлива да се търси в зададено множество от файлове. Vim може автоматично да вмъква или дописва команди, имена на файлове, шаблони за търсене и други низове. Дописването се избира според контекст, определен от извършваното действие и от съдържанието на текста, върху който се прилага. Vim поддържа ,,дневници``, в които записва кои команди са били изпълнявани и какви търсения са извършвани в него. Тези ,,дневници`` се използват за лесно намиране и повтаряне на дадено действие. Тъй като самите те представляват текст, в тях също може да се търси и те могат да бъдат променяни посредством редактиращи действия на Vim. Наред с тези дневници, Vim запомня и разнообразна информация, свързана с историята на извършваните от потребителя действия при работа с редактора: списък от буфери, поставени етикети, съдържание на използваните регистри. Така всичко това може да се използва при следващия сеанс на работа с Vim. Vim позволява да бъдат отменяни (в обратен на извършването им ред) неограничено много потребителски действия (undo), като и те да бъдат повторно извършени (redo). Търсенето със замяна на съответния текст, когато се прилага многократно, може да става наведнъж за всички съответствия или стъпка по стъпка, с потвърждение или отхвърляне от потребителя на всяка замяна поотделно. За всеки файл, с който работи, Vim създава екземпляр за възстановяване след авария: спиране на ток, ,,забиване на системата`` и т.н. Ако се случи подобно нещо, всичко или почти всичко свършено може да се възстанови чрез аварийния екземпляр (Vim сам предлага това), а ако не, в края на работата с дадения файл аварийното му копие тихомълком се унищожава. Когато даден файл бъде променян с друга програма, докато едновременно бива редактиран и с Vim, последният предлага обновяване (изчитане наново) при всяка външна спрямо редактора промяна на файла. Съществуват и са лесно достъпни разнообразни по вид и форма източници на знание за Vim (и изобщо vi): учебници, ръководства, справочници. Изчерпателна документация за Vim е на разположение заедно със самата програма, във вид на хипертекстов справочник. Vim се използва и развива от голямо количество хора. Това помага той постоянно да се усъвършенства. Съществува и постоянно се обогатява хранилище на приставки и други приложни програми за Vim, свободно достъпно като самата програма. Б. Банчев