Начало | Python-форум | Python и Vim | Буква Ё | Формат RTF |
Автор: Евгений Миньковский, 1 декабря 2003 г. Исправлено: 3 декабря 2003 г.
Python-Vim Почему?
Много есть хороших и разных текстовых редакторов, но ещё больше плохих и одинаковых. Волей судьбы, последние несколько лет я профессионально занимаюсь вёрсткой в системе LaTeX. И текстовый редактор, который бы мог оперировать с регулярными выражениями и обладал бы человечным языком программирования для меня необходим. Я перепробовал немалое их количество. Если бы я собрался делать обзор, он был бы очень пухлый. Например, вот это делают и без меня.
Может работать под Windows:
- WinEdt Я получил от Алекса Симоника ключ к его редактору «за заслуги перед отечеством»: написал макрос, который делал find all occurences. Кроме того мне удалось заставить этот редактор исполнять инструкции языка программирования Python обмениваясь с ним информацией по DDE протоколу. Однако процесс этот меня настолько сильно утомил, что на нём всё и завершилось: добро бы встроенный язык этого редактора был бы просто убог, но он ещё и чудовищно неэффективен.
- GNU Emacs Хороший редактор, плохо портированный под Windows.
- XEmacs Хороший редактор, удовлетворительно портированный под Windows. Встроенный язык удивительно быстр, и всё бы здорово если бы не громозкость этого проекта.
- Vim Прекрасный редактор, с паршивым языком программирования, в котором, однако, есть четыре команды, которые подключают языки программирования Python, Perl, Tcl, и Ruby. Речь пойдёт, конечно, о Python'е.
Что здесь?
text.py, скачать
Когда текстовый редактор предоставляет интерфейс к вашему любимому языку программирования это конечно хорошо. Другое дело сделать этот интерфейс удобным. Данный модуль предназначен именно для этого. Он предоставляет интерфейс к буферу как к mutable-строке, обеспечивая работу со срезами. Допустимо присваивание срезу (в том числе в нотации python 2.3, с аргументом step). Кроме того, модуль обеспечивает интерфейс к буферу как к файловому объекту. Модуль предоставляет средства для интерактивной замены участков текста. И наконец, он позволяет удобно работать с регулярными выражениями.
Если вы работаете не только с английским языком, то вы знаете, что python'у надо объяснить, что в этом языке является буквой для того, чтобы правильно заработали метасимволы
\w\W\b\B
в регулярных выражениях, а так же чтобы заработали методы.upper()
,.lower()
,.title()
и т.п. Сделать это можно двумя способами: включить локаль которая есть не для каждой кодировки и, что ещё хуже, на разных системах включается разными способами. А можно закинуть строку в unicode и бед не знать. Но это так говорится «бед не знать». На самом деле, адресация в vim, где текст представлен в форме строки во внутренней кодировке, задаваемой переменной encoding и в unicode_object'е окажется различной если вы пользуетесь мультибайтной кодировкой (например, я пользуюсь utf-8). Чтобы не утонуть в этом бардаке, данный модуль возвращает вместо традиционных match_object'ов новые _AdvansedMO_object'ы. Набор их методов идентичен натуральному, но если поиск происходил в unicode строке, то все адреса пересчитываются так, как-будто поиск шёл в обычной строке, а все строки конвертируются из unicode обратно в vim'овскую кодировку. Некоторый дополнительный атрибут предоставляет доступ к настоящему match_object'у и всем его атрибутам.yo.py, подробнее здесь
Этот скрипт расставляет в русском тексте букву Ё. Основной рабочий инструмент это описанный выше text.py. Слова в которых буква Ё обязана быть, заменяются автоматически, остальные интерактивно.
Сердце и почки этого скрипта — обширная Ё-база. База была создана благодаря усилиям многих энтузиастов. Упомянем здесь прежде всего зачинателя — Михаила Панова и корректора Ольгу Васильеву.
Начало положено глубокой осенью 2003 года, 28 ноября... © Анабар | Vasily Ivanov | outerspace[at]anabar[dot]ru |