Александър Иванов
cream в режим „expert“
16. Външни програми и филтри
В командния ред на vim (тоест, в режим „експерт“) може да изпълните всяка команда към операционната система. Достатъчно е да въведете удивителен знак (!), преди да напишете командата, например
:!ls -l
в Linux ще покаже списък на файловете (е, в Windows командата е dir, а не ls).
Ако преди удивителната поставите r, резултатът от командата ще бъде вмъкнат в текста от курсора надолу, например
:r!ls
В този случай точката може да се използва вместо r —
:.! ls
Vim дава възможност да се прилагат към текста, който редактирате, външните програми филтри. Например:
:%!sort
ще подреди (сортира) всички редове във вашия текст по азбучен ред (е, не винаги е така, както са свикнали филолозите).
Разбира се, външните програми филтри работят с файла, записан на диска, а не с текста, който е в паметта (буфера) на редактора. От това следва, че преди да се обърнете към програма филтър, задължително трябва да запишете текста. Ако той не е записан, програмата филтър „увисва“ и трябва да я прекъснете с Ctrl+C. Текстът в буфера (в паметта) на vim не се променя. (Впрочем, във версия 7.3 на vim/gvim записът на текста се извършва вече автоматично.)
Символът % определя, че действието на командата ще се отнася за всички редове в текста. Може да обработите с филтъра и част от текста, Например
:5,10!sort
ще подреди само текста от петия до десетия ред включително.
Не забравяйте да дадете инструкция каква част от текста да се обработва преди символа !; иначе програмата филтър се опитва да обработи само реда, където е курсорът, и може пак да „увисне“.
Външна команда може да се приложи и към маркиран текст. След като сте маркирали, например, от пети до десети ред, просто натиснете !. В командния ред се появява :'<,'>! и курсорът застава след ! Напишете си командата — тя ще се отнася само до маркирания текст.
Командите '< и '> определят началото и края на последния маркиран текст, тоест маркираният текст се определя като област на действие (range) на командата.
Освен програмата филтър sort, за филолога са полезни още и uniq, rev, nl и още няколко. Наличието на много такива програми филтри в Linux ме кара да го препоръчвам на филолозите — те спестяват много труд и неудобства.
За подробностите при използване на външните програми, поглеждайте в справочните страници на съответната програма или търсете информация в интернет.
Впрочем, от вариант 7 на vim в редактора има вградена команда sort и тя може да се използва вместо външната програма филтър. Само че резултатите може да бъдат различни — експериментирайте и с двата варианта на sort и преценете кой повече ви харесва. Различията се дължат на това, че системната програма sort използва настройките на операционната система, а вградената команда sort използва настройките на vim/gvim.
И накрая — най-хубавото: Undo работи и след като сте използвали външна програма.
Бе аз нали вече казах — vim е страхотен редактор!