воскресенье, 14 сентября 2008 г.

текстовые редакторы, vim :)

Первое мое продолжительное знакомство с Linux прошло под флагом Slackware, и в Slackware, для правки конфигов, я пользовался штукой под названием jed. Это такой маленький, кроссплатформенный редактор, в котором по-умолчанию используются emacs-like сочетания клавиш, но как на мой вкус - более дружелюбный к новичку, чем тот же консольный вариант emacs'а. Для конфигов было достаточно, скриптописательством и прочим программированием я в linux тогда не баловался, а то что текст можно себе спокойно писать не в Word'е, - представлял с трудом. Попытки отредактировать что-нибудь в vim'е заканчивались как и у многих перезагрузкой системы, так как выйти из этого чудо-редактора по-другому не представлялось возможным. По-сути, переход на vim, и переход на Debian, для меня происходили примерно в одно и то же время, - где-то три года назад. С тех пор vim - мой основной текстовый редактор для написания и редактирования кода, и попытки пользоваться чем-то другим, как правило заканчиваются правкой .vimrc.

Последние пару недель, я активно заинтересовался ruby, книга Хэла Фултона, купленная уже достаточно давно ждала своего часа, час, кажется пришел. Пользуясь некоторым затишьем на работы, стал понемного вникать в основы этого чудо-языка. Первые ощущения - это такая себе смесь perl'а и python'а с присущей perl'у выразительностью и компактностью, и python'овским простым, относительно синтаксиса, ООП. То что видел - понравилось, думаю, что некоторые задумки буду делать на ruby. В связи с этим всем, в очередной раз решил посмотреть чего там есть интересного для ruby в мире текстовых редакторов.

Textmate - наверное один из самых популярных редакторов для OS X, предлагают купить за 39 евро. Есть своеобразный "младший брат"(хотя никакого кровного родства насколько я помнимаю нет) - textwrangler - за бесплатно. Ничего особо хорошего или особо плохого по поводу сказать не могу - неплохие текстовые редакторы, с подстветкой синтаксиса, с возможностью эту подсветку настроить как хочется, с некоторыми полезными фичами собственно для разработки - типа коментирования выделенной области кода, автодобавления скобочек, и так далее и тому подобное. У меня они ассоциируются с любимым многими windows-пользователями notepad++ - хотя и тот и другой выглядят пристойней(впрочем это свойствнно OS X -приложениям вообще). За что платить 40 евро, и вообще зачем оно мне могло бы быть надо - не заметил. Хотя есть одна фича в них, которая может быть полезна:



На скриншоте TextWrangler, в котором открыто для редактирования несколько файлов - как видим он отображается справа, в такой себе менюшке, которую при желании можно спрятать. А вот что-то похожее, в более традиционном для unix-систем редакторе:


Это Aqua Emacs - одна из версий GNU Emacs для OS X, с плагином(или как это правильно назвать?) ecb. В верхней части указанный мной места файловой системы, внизу - история открытых файлов. О том как такое сделать можно почитать вот тут: http://sodonnell.wordpress.com/2007/06/13/the-emacs-code-browser/, о ruby+emacs есть неплохой скринкаст: http://platypope.org/yada/emacs-demo/ в котором прелести ruby mode для emacs раскрываются, на вид вкусно, но пока я пас.

Дольше всего я проигрался с eclipse:
И даже ловлю себя на мысли что не так уже и плохо по "look and feel", хотя наверное в какой-то мере и граничит с "из пушки по воробьям" .

Возвращаясь на vim, после странной и долгой экскурсии, опробовал несколько новых плагинов. NERD Tree - дает возможность шататься по файловой системе, открывая файлы, в том числе и в новых табах, достаточно интересная штука:

Другая интересная штука плагин позволяющий листать Man, perldoc, info страницы не выходя из vim: ManPageView - давно хотел чего-то подобного, просто набираем :Man perl, и получаем man-страницу в vim'е так же как если бы мы смотрели vim'овский help(полноценно работает на vim 7.2). Ну и третий плагин на скриншоте - BufferExplorer - думаю, комментарии излишни.

Из понравившихся фич, которым пока не нашел адекватной замены в vim - "автодописывание" end, после объявления класса, метода, или блока с do, в ruby. Правда, особо не искал.

6 комментариев:

sovety комментирует...

Об автодописывании. Есть несколько плагинов, вроде

http://www.vim.org/scripts/script.php?script_id=2373
http://www.vim.org/scripts/script.php?script_id=1849
http://www.vim.org/scripts/script.php?script_id=2009

У меня стоит последний из них, AutoClose, он умеет автоматически вставлять парные символы (скобки, кавычки). Единственное, что эти плагины заточены, кажется, именно под парные символы, а не строки. Т.е. потребуют модификации для того, чтобы автоматически закрывать блоки do-end.

diesel комментирует...
Этот комментарий был удален автором.
diesel комментирует...

о спасибо за ссылки, не подумал бы что оно AutoClose может называться. Для скобочек в блоках типа
while(){
}
у мну дописано:

imap {<CR> {<CR>}<Esc>O<Tab>


по аналогии с этим для
while .. do
end
пробовал:
autocmd Filetype ruby imap do<CR> do<CR>end<Esc>O<Tab>

но оно с одной стороны не универсально, и штуки типа
array.each do |item|
end
не берет, и привести к желаемому сходу не получилось :)

antono комментирует...

для do end
есть snippetEmu

diesel комментирует...

гы, спасибо большое! snippetEmu - это даже больше чем я хотел - причем и для перла и для руби, и для еще целой кучи всего :), надо только привыкнуть этим пользоваться, а то как-то даже страшно, когда из-под таба целые куски кода вываливаются со странными скобочками :)

Aliaksandr комментирует...

Думаю что всем будет полезно, недавно появилась полезная тулза, для документирования кода, пока что на ruby и только под linux :) . Очень удобно из гуя на gtk+ и сразу если нада с форматированиями для RDoc.
http://rubyforge.org/projects/rudoto/