Александър Иванов
cream в режим „expert“
а) Списък на символите в текста
Ясно е, че след всеки символ трябва да въведем управляващия символ за край на реда:
:%s:\(.\):\1\r:g
Необходимо е да поставим символа в група, за да може да го възстановим в заместващата част на командата.
След като изпълним тази команда, между абзаците ще има по два празни реда, а не по един. (Защо?) В примера Изтриване на празните редове се разяснява как да оправим това.
Използвайте F4, за да видите, че редовете, които изглеждат празни, са два типа — едни са наистина празни (това са редовете между абзаците), на повечето обаче има една шпация (това е шпацията между думите в реда). Със следните две замени можете да направите тези два случая „видими“, ако се налага:
:%s: :<space>:
(Тук в полето за търсене има шпация.)
:%s:^$:<nl>:
Как да използвате програмите филтри sort и uniq, за да подредите и групирате символите от текста, се разяснява в примера Направа на фреквентен или рангов речник. Алтернатива, може би по-удобна, е програмата gchardict.py от glotta — тя върши същата работа, но посочва и кодовете (code points) на символите.
Твърде полезно е, преди да се захванете с обработка на някакъв текст, още докато го превръщате в добре редактиран текст, да си направите речник на наличните символи. Това ще ви спести неприятни изненади по-нататък.
Нека споделя малко практика. Когато редактирам текст, аз по няколко пъти правя речник на символите с gchardict.py. Дори не записвам този речник — използвам u (нали си спомняте? undo работи), за да се върна към текста и да продължа редактирането му.