Цель статьи рассказать о своем поиске «идеального» редактора для python кода, о том почему выбрал emacs и кратко о том как я его (emacs) настроил для работы с python.

Небольшая предистория: Разработкой на python я занимаюсь уже более двух лет и все это время пытался подобрать оптимальный редактор. Что я только не использовал за это время — mcedit, nano, gedit, netbeans, eclipse, а также некоторые другие платные варианты (демо версии). Но всегда чего то нехватало, где то автокомплита, где то подсветки, где то банально неудобно. Какой то период (около 10 месяцев) использова�� Eclipse, но его прожорливость в ресурсах, зависания доводили до белого каления. Когда ошибки eclipse мне окончательно надоели, я начал поиски такого редактора который стал бы отличным помошником в работе.
Вооружившись google начал искать «идеальный» редактор.

Note! Далее в тексте сугубо личное мнение автора.
«Идеальный» редактор должен быть:
  • Легким — не требовать для свой работы более 500Mb оперативной памяти;
  • Настраиваемым — дать возможность настроить под себя (внешний вид, key binding);
  • Надежным — дать возможность восстановить предыдущие данные в случае краха;

Хотелось также отметить желаемый функционал и особенности использования:
  • Автокомплит — облегчает работу, делаем меньше нажатий;
  • Интроспекция по коду — уменьшаем время на поиск необходимого класса и/или метода в нем;
  • Подсветка синтаксиса — улучшаем читаемость кода, уменьшаем нагрузку на зрение;
  • Минимальное использование мыши — не отрываем руки от клавиатуры;
  • Добавление сниппетов — уменьшаем рутинные действия по созданию новых структур;
  • Поддержка cvs/vcs — svn, git, mercurial;
  • Поддержка управления проектами;

Python-специфичный функционал:
  • Поддержка python-shell;
  • Проверка pep8, pylint;
  • Окончание, переносы строк, отступы;
  • Отладка;


Кандидат №1Gedit:
Штатный редактор графической оболочки Gnome.
Чем хорош:
  • Легкий;
  • Настраиваемый;
  • Есть поддержка python;
  • Легко расширяется дополнительными плагинами;

Чем плох:
  • Низкая надежность (иногда все же зависает, после чего восстановить предыдущее состояние проблематично);
  • Нет поддержки управления проектами;
  • Нет интеграции с git (есть несколько плагинов но как с ними правильно работать так и не разобрался);

Итог: Для редактирования небольших скриптов вполне пригоден, для более крупных проектов практически непригоден.

Кандидат №2Eric:
The Eric Python IDE
Чем хорош:
  • Полноценная IDE;
  • Гибкие настройки;
  • Поддержка python;
  • Есть возможность расширять функционал плагинами;

Чем плох:
  • Для установки нужен QT;
  • Громоздкий;
  • Как и любая IDE требует периода привыкания (не осилил);

Итог: На первый взгляд полноценная IDE. С продуманным интерфейсом. Если привыкнуть наверное будет удобно.

Кандидат №3Emacs
Аскетичный редактор с массой настраиваемых возможностей
Чем хорош:
  • Легкий;
  • Настраиваемый;
  • Есть поддержка python и многих других языков;
  • Легко расширяется;

Чем плох:
  • Можно настраивать до бесконечности и так никогда и не настроить окончательно;
  • Много key-binding;
  • Высокий уровень вхождения в использование;

Итог: Данный редактор использую в данное время. Сложно настроить, нелегко привыкнуть использовать, очень тяжело потом использовать другой редактор (даже кратковременно)

Почему выбрал emacs? Довольно давно присматривался, но как и многие разработчики старался использовать готовое решение без сложных телодвижений. Да и наверное не хотелось долго возится с настройкой. Вот только тогда, когда надоели всякие рюшики и кнопочки захотелось просто работать и ни на что не отвлекаться. В общем установив emacs и потратив несколько бессоных суток на настройку, и проработав в нем некоторое время понял что этот редактор задержиться со мной надолго.

Как настраивал. Многие начинающие пользователи emacs, раздувают свой "~/.emacs" неструктуированными плагинами и hook'ами. В начале я поступил также, но посмотрев на организацию настроек у gabrielelanaro, сделал следующую структуру.
Используемая конфигурация:
.
.. dist — дистрибутивы расширений
... autocomplete — автодополнение в emacs, использована версия из репозитория gabrielelanaro, оригинальная версия
... python-mode — поддержка python в emacs от python сообщества версия <a рref=«launchpad.net/python-mode»>6.0.2
... yasnippet — поддержка сниппетов в emacs, использована версия из репозитория gabrielelanaro, оригинальная версия
... pymacs — python binding к emacs, сайт проекта
.. doc — документация расширений
.. exten — расширения которые будут инициализированы
... autocomplete
... color-theme.el — подключение дополнительных тем оформления
... highlight-indentation.el — подсветка отступов
... open-next-line.el
... python-mode.el — собственно python-mode
... python-pylint.el — поддержка pylint (pylint должен ��ыть установлен в системе)
... snippet-helpers.el — дополнение к yasnippet
... yasnippet
... autopair.el — закрытие парных символов
... fill-column-indicator.el — индикатор линии
... lambda-mode.el — замена lambda на символ отображения
... pymacs.el
... python-pep8.el — поддержка pep8 (pep8 должен быть установлен в системе)
... smart-operator.el
... themes — дополнительные темы
.. init — файлы инициализации компонентов
.. init.el — непосредственно инициализация конфигурации
.. python-dist — дистрибутивы python пакетов необходимые для работы
... Pymacs
... rope
... ropemacs
... ropemode
Полностью конфигурацию можно забрать из моего репозитория на GitHub, конфигурация не окончательная. В планах на будущее интегрировать ECB. В wiki репозитория добавить описание какие key-binding используются.

Интересные дополнения интегрированные в данную конфигурацию:
Переключение между буферами:
\С +. — next buffer
\C +, — prev buffer

Переключения между окнами:
\M + up
\M + down
\M + left
\M + right

Автодополнение по нажатию \TAB

Что бы правильно работало дополнение классов и методов python необходимо активировать проект rope:
По умолчанию если проект не создан, rope предлагает его создать.

Несколько скриншотов:


Подсвека синтаксиса, вертикальная синяя черта индикатор 80го символа


Автодополнение в работе


iBuffer — показан спис��к всех открытых буфферов


Интегрирован ido с поддержкой fuzzy search

Хотелось бы услышать мнение опытных пользователей emacs о подобном приеме организации конфигурации emacs и о данной конфигурации в частности. Примеры и пожелания для улучшения данной конфигурации всячески приветствуются.

Платформа на которой работает данная конфигурация:
Linux ppc 3.1.5-gentooppc #1 SMP Wed Jan 4 00:01:44 EET 2012 i686 Intel Pentium CPU P6200 @ 2.13GHz GenuineIntel GNU/Linux