О текстовых редакторах - Python Web Development

О текстовых редакторах - Python Web Development

  • Введение

    С интересом читаю обзор Pythy о Pythonnic IDE. Это меня подтолкнуло к тому, чтобы изложить свой опыт работы с различными текстовыми редакторами, возможно это пригодиться тем, кто также ищет редактор для разработки Python приложений, для Web.

    Сразу хочу изложить несколько аксиом, на базе которых построен этот обзор:

    • Нет идеального текстового редактора для любых ситуаций. Если бы таковой был - все бы давно им пользовались. Исходя из этого, можно утверждать что в той или иной ситуации тот или иной редактор будет лучше подходить к выполнению определённой работы, чем любой другой
    • Этот обзор не является полным. Постоянно появляются новые текстовые редакторы, или новые, неизвестные (не описанные в данной статье) способы использования старых. Комментируйте - я буду стараться улучшать статью.

    Итого, цель данного исследования - самому - и с помощью ваших комментариев выделить 2-3 наиболее интересных/удобных редакторов для разработки Web приложений на Python. Я специально пишу эту статью не только чтобы поделиться своими исследованиями в этой области, но и чтобы увидеть ваши комментирии и соответственно возможно расширить круг своих знаний.

    Я не хочу вдаваться в перечисление мелких и достаточно распространённых фич редактора, которые есть во всех редакторах, но перечислю те, наиболее важные аспекты текстовых редакторов которые реально помогают мне в ежедневной работе Web разработчика.

    Перед тем, как начать реальный обзор я хочу сразу заметить что последние 14 лет я работаю исключительно в Linux и FreeBSD. Но не стоит бросать чтение если Вы пользователь Windows - некоторые из описанные здесь редакторов кросс-платформенны и могут работать под управлением разных операционных систем.

  • Что бы я хотел видеть в идеальном текстовом редакторе

    Я наверно перечислю те фичи которые я вижу необходимыми в порядке их значимости для меня, а далее дам обзор каждой из них, так, чтобы пользователю, незнакомому с некоторыми фичамы было ясно о чём речь. Я кстати замечаю (иногда часто по себе) - что пока сам не попробуешь - сложно даже предположить насколько фича X удобна. Потому я постараюсь приложить максимум усилий к рекламе тех фич которые мне реально помогают/понравились - но и читатель со своей стороны чтобы досконально понять о чём речь должен по крайней мере попробовать эту фичу.

    • Подсветка синтаксиса
    • Поддержка синтаксиса языка (мне важен Python,PHP,HTML), управление кодом
    • Одновременное редактирование множества файлов
    • Редактор должен быстро работать (а не "тормозить")
    • Undo & Redo
    • Search-as-type
    • Поддержка нескольких блоков
    • Выполнение,компиляция(выполнения) программы
    • Макросы
    • Find & Replace по всем файлам с подкаталогами
    • Таб для файлов
    • Обнаружение и обработка ошибок компиляции
    • Глюки (точнее полное их отсутствие), сообщество
    • Работа с FTP/SSH/…
    • Поддержка нескольких окон
    • Легкость обучения работе с тесктовым редактором

    На самом деле всё вышеизложенное весьма формально. Простым языком я бы сказал так: "скорость, неглючность, простое добавление новых фич"- это мои требования к редактору. В первую очередь ценю скорость редактора, и скорость написания кода в нём. Глюков (типа segfaults) быть не должно не в коем случае. Это меня расстраивает больше всего - работаешь работаешь как вол - а потом с интересом пытаешься найти окошко текстового редактора которое - "только что было на экране и вдруг пропало?!…". А редактор тихо свалился в корку. Далее о фичах более подробно (это для тех кто не совсем понимает что за фичи и зачем они нужны).

    • Подсветка синтаксиса

      Вряд ли этот пункт может вызвать непонимание у читателей - подсветка синтаксиса языка стала стандартом де-факто. Я считаю что правильно подобранная подсветка синтаксиса весьма упрощает чтение кода "с листа" - это впрочем подтверждают специалисты по usability.

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

      Очень важно наличие максимального количества расцветок под все языки и типы файлов. Чем больше, тем лучше.

    • Поддержка синтаксиса языка, управление кодом

      Пользователи HomeSite и многих интегрированных IDE знают насколько удобно когда редактор "подсказывает" какие аттрибуты есть у тэга в режиме HTML и т п. Или ставит положение курсора куда надо. Мне также очень нравиться функция Comment-Region - по нажатию определённой кнопки - весь выделенный блок текста комментируется с помощью синтаксиса комментариев для данного языка программирования. В общем поддержка синтаксиса языка полезная и удобная фича, которую хотелось бы выдеть в идеальном текстовом редакторе.

    • Одновременное редактирование множества файлов

      Фанаты некоторых односессионных текстовых редакторов могут сказать что открывать несколько файлов сразу в одном текстовом редакторе необязательно - легче открыть несколько окон и в каждом из них открыть другой файл. Можно конечно и так - но скорость работы скорее всего будет падать по мере увеличения одновременного количества открытых файлов. Хорошо если их 2-3, в ситуации же с десятками открытых файлов явные преимущества будут на стороне редактора работающего с несколькими файлами сразу.

    • Редактор должен "летать" а не "тормозить"

      Очень важная характеристика на мой взгляд. Если редактор запускается больше минуты, или если редактор не успевает за вашей скоростью набора букв - лучше сразу заменить и не мучаться. Задержка в секунду не заметна один раз, задержка в секунду тысячу раз в день будет отрицательно воздействовать на подсознание.

    • Undo & Redo

      Часто, сделав изменение, или даже несколько, понимаешь что нужно вернуться на то место с которого начинал. Мало того, часто я применяю следующий подход для отдадки программы - открывается, допустим файл, который надо отладить. Меняем всё, что надо. Когда отладили очередной кусок кода - возвращаем файл в исходное состояние просто нажимая и удерживая кнопку Undo в редакторе.

    • Search-as-type

      Люди, никогда не работавшие с search-as-type наверное не поймут зачем это надо - ведь есть обычный search. Реально, search-as-type фича весьма удобна не только для поиска или поиска/замены но и просто для навигации по тексту. Зная ключевые места и названия функций, можно легко прыгать туда куда надо просто набирая эти ключевые слова через search-as-type.

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

    • Поддержка нескольких блоков

      Представим себе типовую операцию - поменять строки X на Y, A на B в 10ти файлах. В обычном случае прийдется запомнить блок текста Y, и последовательно заменить X на Y в 10ти файлах, а потом пройти ещё раз все 10 файлов, меняя A на B. Если же ваш редактор или среда поддерживают возможность работы с несколькими блоками одновременно, тогда все замены можно будет сделать за один проход.

    • Макросы

      Ох какая это классная фича. Очень часто (99%) это линейная программа - просто даешь редактору задание запомнить что ты делаешь - а потом проигрываешь действия снова и снова. Часто надо сделать что не нетривиальное - например перенести 2е слово в конец и поставть точку с запятой. Это невозможно сделать блоком так как длинна разная. Короче я реально применяю эту фичу ещё со времен работы в Multi Edit, затем QEdit. Не представляю себе как можно эффективно программировать без неё.

    • Find & Replace по всем файлам с подкаталогами

      Поменял название функции - come here. Надо найти где используется переменная - сюда. И т.п. Некоторые пошли дальше и предлагают Refactoring Tools, автоматизированные переименования и переносы кусков кода. По моему это уже черезчур - хотя я сам не пользовался, не знаю. Я думаю что редактор для "программера нашего времени" по крайней мере должен уметь искать с подкаталогами.

    • Работа с FTP/SSH/…

      Данная фича важна в Web Development. Понятно что обычно разработка идёт локально. Но иногда бывают ошибки и на production серверах - которые обычно далеко от нас и доступ туда в основном по SSH, иногда FTP.

    • Поддержка нескольких окон

      Часто бывает удобно смотреть на кусок кода в одном окне а программировать на другом. Понятно что можно открыть 2 редактора. Но удобнее конечно сделать это внутри одного так как если вы меняете один и тот же файл - второй редактор не отобразит этого.

    Обзор наиболее "интересных" редакторов

    • Сводная табличка фич

      Начну со сводной таблицы по фичам - каждой фиче присвою баллы (конечно же субективно и исходя из полезности данной конкретной фичи для Python Web Development).

      Фича

      Общая полезность фичи в баллах

      Оценка поддержки фичи в редакторе

      Emacs

      Kate

      Scite

      mcedit

      vi/gvim

      IDLE

      Подсветка синтаксиса

      10

      8

      5

      4

      6

      7

      4

      Поддержка синтаксиса языка (мне важен Python,PHP,HTML), управление кодом

      10

      10

      3

      5

      0

      0

      10

      Одновременное редактирование множества файлов

      8

      10

      10

      0

      0

      0

      4

      Редактор должен "летать" а не "тормозить"

      5

      10

      7

      10

      10

      8

      8

      Undo & Redo

      9

      10

      10

      5

      4

      4

      5

      Search-as-type

      7

      10

      0

      0

      0

      0

      0

      Поддержка нескольких блоков

      5

      10

      8

      0

      0

      0

      0

      Выполнение,компиляция программы

      8

      10

      5

      10

      0

      0

      10

      Макросы

      5

      10

      5

      0

      0

      0

      0

      Find & Replace по всем файлам с подкаталогами

      4

      10

      10

      0

      10

      0

      0

      Таб для файлов

      7

      10

      3

      0

      0

      0

      0

      Обнаружение и обработка ошибок компиляции (выполнения)

      5

      10

      0

      0

      0

      0

      10

      Глюки (точнее полное их отсутствие), сообщество

      10

      9

      9

      9

      9

      9

      9

      Работа с FTP/SSH/…

      10

      8

      10

      0

      9

      0

      0

      Поддержка нескольких окон

      9

      10

      0

      0

      0

      0

      8

      Легкость обучения работе с текстовым редактором

      8

      4

      10

      7

      9

      1

      8

      1102

      851

      356

      288

      228

      201

      \\

    Выводы

    В общем то чего то подобного я и ожидал. Реально я работаю в Emacs и иногда в Kate и соответственно набор фич редактора которыми я пользуюсь лежит где то близко. Сейчас я понимаю что я просто формально проанализировал свои предпочтения

    • Рекомендации

      Учитывая простоту обучения Kate - это будет наиболее рекомендованным редактором для Python Web Development. Нельзя сказать что в Kate как то развиты средства управления синтаксисом Python, но в то же время Kate очень хороший редактор для "Web Development" в общем. Так что плюсы и минусы дают такой вот результат. Для тех же кто хочет оптимизировать скорость своей работы по максимуму - ничего лучше Emacs вы не найдетё, и не ищите.

      Чтобы суммировать - хотите быстро работать - выбирайте Kate.

    • Заметки

      Эта статья не является законченной. В ближайшее время я хочу добавить сюда заметки по Eclipse, Komodo, PyDev. В то же время я сразу замечу что они не наберут много баллов по моей системе. Как я знаю тот же Komodo является одним из первых в рейтинге - но при этом я точно знаю что он (a) большой (b) не работает с FTP/SSH (c) платный. Eclipse хорош, только вот Python поддержка там минимальна, да и опять же - большой, с FTP не работает.

      Added: 2006-11-30
      Updated: 2008.02.18
      \\

Comments

Comments powered by Disqus