Цель статьи рассказать о своем поиске «идеального» редактора для python кода, о том почему выбрал emacs и кратко о том как я его (emacs) настроил для работы с python.
Небольшая предистория: Разработкой на python я занимаюсь уже более двух лет и все это время пытался подобрать оптимальный редактор. Что я только не использовал за это время — mcedit, nano, gedit, netbeans, eclipse, а также некоторые другие платные варианты (демо версии). Но всегда чего то нехватало, где то автокомплита, где то подсветки, где то банально неудобно. Какой то период (около 10 месяцев) использова�� Eclipse, но его прожорливость в ресурсах, зависания доводили до белого каления. Когда ошибки eclipse мне окончательно надоели, я начал поиски такого редактора который стал бы отличным помошником в работе.
Вооружившись google начал искать «идеальный» редактор.
Note! Далее в тексте сугубо личное мнение автора.
«Идеальный» редактор должен быть:
Хотелось также отметить желаемый функционал и особенности использования:
Python-специфичный функционал:
Кандидат №1 — Gedit:
Штатный редактор графической оболочки Gnome.
Чем хорош:
Чем плох:
Итог: Для редактирования небольших скриптов вполне пригоден, для более крупных проектов практически непригоден.
Кандидат №2 — Eric:
The Eric Python IDE
Чем хорош:
Чем плох:
Итог: На первый взгляд полноценная IDE. С продуманным интерфейсом. Если привыкнуть наверное будет удобно.
Кандидат №3 — Emacs
Аскетичный редактор с массой настраиваемых возможностей
Чем хорош:
Чем плох:
Итог: Данный редактор использую в данное время. Сложно настроить, нелегко привыкнуть использовать, очень тяжело потом использовать другой редактор (даже кратковременно)
Почему выбрал 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
Небольшая предистория: Разработкой на python я занимаюсь уже более двух лет и все это время пытался подобрать оптимальный редактор. Что я только не использовал за это время — mcedit, nano, gedit, netbeans, eclipse, а также некоторые другие платные варианты (демо версии). Но всегда чего то нехватало, где то автокомплита, где то подсветки, где то банально неудобно. Какой то период (около 10 месяцев) использова�� Eclipse, но его прожорливость в ресурсах, зависания доводили до белого каления. Когда ошибки eclipse мне окончательно надоели, я начал поиски такого редактора который стал бы отличным помошником в работе.
Вооружившись google начал искать «идеальный» редактор.
Note! Далее в тексте сугубо личное мнение автора.
«Идеальный» редактор должен быть:
- Легким — не требовать для свой работы более 500Mb оперативной памяти;
- Настраиваемым — дать возможность настроить под себя (внешний вид, key binding);
- Надежным — дать возможность восстановить предыдущие данные в случае краха;
Хотелось также отметить желаемый функционал и особенности использования:
- Автокомплит — облегчает работу, делаем меньше нажатий;
- Интроспекция по коду — уменьшаем время на поиск необходимого класса и/или метода в нем;
- Подсветка синтаксиса — улучшаем читаемость кода, уменьшаем нагрузку на зрение;
- Минимальное использование мыши — не отрываем руки от клавиатуры;
- Добавление сниппетов — уменьшаем рутинные действия по созданию новых структур;
- Поддержка cvs/vcs — svn, git, mercurial;
- Поддержка управления проектами;
Python-специфичный функционал:
- Поддержка python-shell;
- Проверка pep8, pylint;
- Окончание, переносы строк, отступы;
- Отладка;
Кандидат №1 — Gedit:
Штатный редактор графической оболочки Gnome.
Чем хорош:
- Легкий;
- Настраиваемый;
- Есть поддержка python;
- Легко расширяется дополнительными плагинами;
Чем плох:
- Низкая надежность (иногда все же зависает, после чего восстановить предыдущее состояние проблематично);
- Нет поддержки управления проектами;
- Нет интеграции с git (есть несколько плагинов но как с ними правильно работать так и не разобрался);
Итог: Для редактирования небольших скриптов вполне пригоден, для более крупных проектов практически непригоден.
Кандидат №2 — Eric:
The Eric Python IDE
Чем хорош:
- Полноценная IDE;
- Гибкие настройки;
- Поддержка python;
- Есть возможность расширять функционал плагинами;
Чем плох:
- Для установки нужен QT;
- Громоздкий;
- Как и любая IDE требует периода привыкания (не осилил);
Итог: На первый взгляд полноценная IDE. С продуманным интерфейсом. Если привыкнуть наверное будет удобно.
Кандидат №3 — Emacs
Аскетичный редактор с массой настраиваемых возможностей
Чем хорош:
- Легкий;
- Настраиваемый;
- Есть поддержка 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
