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 можно использовать и здесь.

9 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. Спасибо за ссылку на полную Geany. Я работаю в школе, мне надо, чтобы все ученики смогли по-простому поставить программу на свой компьютер, а предыдущие версии не позволяли это делать. теперь наши проблемы решены, благодаря Вам и Вашей ссылке на действительно ценный дистрибутив.
    Ольга.

    ReplyDelete