Tuesday, February 10, 2009

Знакомьтесь: Geany!

Введение

Я уже писал, что мне очень нравится редактор SciTE и поэтому я его постоянно использую, например, при программировании на Python. Однако в GTK версии есть несколько недостатков:
  • Открытие большого числа вкладок невозможно - не работает прокрутка и multiline
  • Глюки с юникодом - если написать \что-то при редактировании TeX документа, получим несуразные символы. Эти же несуразные неудаляемые символы также иногда появляются в строке поиска
  • Нет нормальной интеграции с shell. В итоге для простейшей проверки конструкции в ipython приходится переключаться на терминал
Естественно, можно было бы подправить это в самом SciTE, но зачем, если всё уже сделано? Представляю вам Geany - простейший редактор с замашками IDE(которые, в принципе, не мешают :) ) основанный на том же движке, что и SciTE - на Scintilla.

На этом скриншоте он уже немного подконфигурирован для моего удобства. Возможности Geany:
  • Подсветка, фолдинг - аналогично SciTE
  • Нормальные табы
  • Поддержка VTE
  • Symbol explorer
  • Плагины(в числе встроенных FileBrowser, SplitWindow и т.д.)
  • Автодополнение по символам(неплохое, но для Python хотелось бы лучше. Geany - Open Source, так что возможно это желание будет реализовано)
  • Автозакрытие тегов
  • Сессии
Более подробно хотелось бы остановится на поддержке VTE. Благодаря ей в Geany есть полноценный терминал! Насколько это удобно можно понять, прочитав следующий раздел.

Конфигурирование

В этом разделе я хочу дать описание моего рабочего окружения в Geany. Оно не блещет уникальностью, но весьма удобно. Конечный внешний вид - на скриншоте выше. По пунктам:
  1. Ставим. Я просто выполнил "emerge -av geany". Думаю, в остальных Linux дистрибутивах его можно поставить сходным же образом. Для Windows пользователей - есть инсталляторы
  2. Убираем Sidebar, дабы сэкономить площадь
  3. Задаем комбинации клавиш для удобного перемещения по табам
  4. Настраиваем терминал - самая интересная часть. Я выбрал себе темную темку и запустил внутри screen - в итоге я могу переключаться между логами сервера, ipython и дополнительными консолями. Для меня терминал в Geany - самый важный инструмент. В нём я работаю с git и hg, в нём я отлаживаю приложение, в нём же я и лажу по файлам("geany file_name" открывает файл в новой вкладке). Таким образом, терминал мне заменяет File Browser, Debugger и VCS Inegration
  5. Настраиваем шрифт, остальные комбинации клавиш и интерфейс по вкусу
У меня в screen не заработала клавиша Backspace, пришлось биндить. Ниже - кусок конфигурационного файла screen (.screenrc), который делает screen юзабльным:
bindkey -d ^@ stuff ^? # пофикс backspace
hardstatus on
hardstatus alwayslastline
hardstatus string "%{Gk}| %-w%{+u}%n %t%{-}%+w |%=(%l) %d/%m %c"
До сих пор нормально не работает скролл на мышке, прокрутка вверх генерит "^[[A". Если у кого-то есть уже решение - поделитесь :) Если разберусь сам - проапдейчу.

Выводы

Geany - отличный редактор, полностью покрывающий мои запросы. На данный момент я использую его для Python разработки и редактирования TeX файлов. Для С++ же я предпочитаю IDE Anjuta, хоть Geany можно использовать и здесь.

10 comments:

  1. Правильно ли я понял что в этом редакторе для определённого типа файла можно использовать либо строчные либо блочные комментарии?
    В data/filetypes.python есть строчки:
    # if only single comment char is supported like # in this file, leave comment_close blank
    comment_open=#
    comment_close=

    ReplyDelete
  2. Нет, блочные комментарии, вроде /**/ в С++ файлах у меня не работают. Я комментирую построчно, посредством Ctrl+e

    ReplyDelete
  3. Поставил под винду - оказалось абсолютно не юзабельно. Без скрина и прочих прелестей пользы от этого джина мало... ;)

    ReplyDelete
  4. 2tosha: мне теперь вообще сложно представить удобное рабочее окружение под Windows. На Windows можно найти отличные реализации Autocomplete, а вот остальные полезные тулзы надо или из под Cygwin пускать, или отказываться от них.

    ReplyDelete
  5. Похоже что это только в C++ не комментирует блочно, в Java и др. работает именно блочный комментарий. Похоже что настраивается только на один вид комментариев, либо блочный, либо построчный. В Python вообще комментирует каждую строку конструкцией "#~ ".
    Мне в этом редакторе хватает всего, кроме WordCompletion. Это решило бы проблему отсутствия тэгов в XML. Видимо придется самому писать эту функцию, придется разобраться с си. Ещё бы я заменил автозакрытие XML тэгов на ручное, как это сделано в Gedit в плагине XmlHelper.

    ReplyDelete
  6. @ibnteo
    В Python конструкция #~ настраиваема, но меня она устраивает.
    Что Вы имеете в виду под WordCompletion? Некий completion в Geany есть, но он по символам. Лично мне не хватает обычного completion из SciTE, но т.к. Geany использует Scintilla, то, возможно, этот способ получиться прикрутить.

    ReplyDelete
  7. Самая бяка в Scintilla - это подсветка шаблонов типа mako. там есть теги <%def> и подобные, т.е. начинающиеся с %
    И редактор понимает их как ASP или что-то еще и подвечивает до самого не хочу. После таких тегов надо добавлять %> чтоб такого не было, но ведь не почеловечески же это. А как с этим бороться - видимо никак, так уж в движке зашито.
    Пока только vim и gedit не бузят по такому поводу.

    ReplyDelete
  8. Благодарю тебя Сергей за Geany . А я раньше не знал . Отличная вещь .

    ( linuxforse()gmail.com )

    ReplyDelete
  9. Отличная среда. Чем-то удобнее SciTE, только пока мало полезных модулей, может со временем исправится ситуация. На счет screen, было бы удобно если сделать табы для терминала.

    ReplyDelete
  10. Спасибо за ссылку на полную Geany. Я работаю в школе, мне надо, чтобы все ученики смогли по-простому поставить программу на свой компьютер, а предыдущие версии не позволяли это делать. теперь наши проблемы решены, благодаря Вам и Вашей ссылке на действительно ценный дистрибутив.
    Ольга.

    ReplyDelete