SublimeText сквозь призму некоторых других редакторов

Благодаря этому посту, узнал об очень интересном редакторе, SublimeText. Общее описание и/или относительно подробные детали можно узнать либо по той ссылке, либо на оффсайте. Я же просто напишу те юзкейсы, которые вспоминаются сразу и которые я использую в Notepad++ (SublimeText как раз отличный претендент на его замену). Пункты идут абсолютно не по значимости, а по мере считывания из мозгового носителя. Будут разобраны:
Запуск разных файлов, консоль, поддержка Mercurial
Нахождение подстроки, выделение строки, комментирование строк
Автокомплит, подсветка синтаксиса
Сниппеты, закладки


1. «Запуск разных файлов»
Это одна из killer-фичей SublimeText. По хоткею Ctrl+F7 (F7 или Ctrl+B в свежих сборках бета-версии ST2) запускается куча всего, от *.py до *.bat. То что py-файлы запускаются, это Ъ, но, в общем, ожидаемо. Гораздо приятней, что через Ctrl+F7 запускаются py-файлы использующие pygame, pyopengl, mechanize и прочие. Следовательно, Sublime просто использует установленный в системе питон, а не дистриб внутри себя. Отсюда вопрос, что мешает другим IDE делать то же «из коробки»? Зачем все эти многочисленные «А укажите-ка ваш PATH к чему-нибудь, чтобы я хоть что-то шмогла».
Итак, по этому пункту рассматриваемая программа однозначно побеждает, ибо пинотоводство в Notepad++ нуждается в костылях вида «А пропиши-ка для всех файлов что-то наподобие

cd c:/projects/samples
c:/python26/python myshitdrop.py

в свойства плагина NppExec, чтобы запускать по F6, выбрав из выпадающего списка забинденные файлы».
2. «Нахождение подстроки»
С одной стороны, Notepad++ «из коробки» подсвечивает повторы для выделенной подстроки, что меньше на клик. У Sublime надо доп. нажатие Alt+F3 (Update: для ST2 b2180 показывает сразу) . Зато у последнего можно сразу мультиредактировать выделенное в нескольких местах сразу, Notepad++ же такого не даёт. Казалось бы, пункт выигран плюсоватым ноутпадом, но нет — The HighlightCurrentWord Plugin для SublimeText даёт такую функциональность. (хоткей Ctrl+Shift+H её включает/отключает). Причём, этот плагин даже чуть получше — для подсвета повторов подстроки достаточно курсора на слове, без выделения.
3. «Автокомплит»
Вот это интересная тема. Наиболее удобный для меня автокомплит есть во FlashDevelop:
a) Динамически всплывает сразу, без всяких лишних Ctrl+Space (Update: для ST2 b2180 всплывает сразу)
б) Захватывает создаваемые переменные
в) Реагирует не только на первые буквы, но и на середину. То есть по «ke» можно вытянуть «flash.events.KeyboardEvent»
г) И главное: реагирует на backspace — подбирая (расширяя) варианты, а не тупо сворачивается, как во многих других программах.
К сожалению, action script остался для меня не более чем «Оу, я научился делать так, чтобы зелёный треугольник бегал за синим квадратом». Поэтому, FlashDevelop тут вне конкурса, просто для флейма. А что у SublimeText, что у Notepad++ есть над чем работать. Очень странно, почему у последнего есть переключатель: дополнение только для функций или только для слов. Хотя отмечу, что для ситуации «автокомплит слова, уже ранее встречающегося в тексте» (например: не хочу печатать полностью слово «митохондрия», хочу пару букв), Notepad++ поудобней — сразу видимый всплывающий список наглядней, чем постоянно помнить, имеет смысл нажимать на Ctrl+Space или нет. (Update: для ST2 b2180 этот недочёт неактуален) Пусть итог будет 55 на 45 в процентах.
4. «Сниппеты»
Безоговорочная победа SublimeText. Удобно не просто для использования, но и для бекапа на всяк пожарный. Ибо все написанные юзером сниппеты (не считая кучу предуставленных) находятся в /Где-У-Вас-Sublime/Data/Packages/User. К примеру для написания данных строк я быстро накалякал

<!-- See http://www.sublimetext.com/docs/snippets for more information -->
<snippet>
	<content><![CDATA[SublimeText]]></content>
	<!-- Optional: Tab trigger to activate the snippet -->
	<tabTrigger>саб</tabTrigger>
	<!-- Optional: Scope the tab trigger will be active in -->
	<scope>source.python</scope>
	<!-- Optional: Description to show in the menu -->	
	<description>Автодополнение для SublimeText</description>
</snippet>

И теперь, из-за лёгкого применения вышеприведённого, данный пост похож на fuckin` black seo, оптимизированное под понятно какое слово. У Notepad++ же со сниппетами какая-то хрень. То ли плагины полурабочие, то ли я «неоселел».
Небольшой P.S., для тех, кто прочитал документацию к сниппетам. По идее, вместо строки «source.python» надо что-то вроде «source.html» или «source.plaintext». В смысле, наверно не очень круто говорить программе, что у ней сейчас питоноводство, в это же время печатая в ней блогопост. Но кроме как для source.python, сниппет работать не хочет. Your rtfms are welcome. Применил навык внимательности: чтобы сниппет работал на всех типах файлов, строку

<scope>source.python</scope>

надо вообще удалить.
5. «Консоль»
У SublimeText — питоновская консоль по Ctrl+~, у Notepad++ по этому же хоткею полноценная cmd. Где-то удобней первое, где-то второе. Но, как всегда хочется ведь всего и сразу. Поэтому к примеру, Ctrl+~, а потом hg diff не получится сделать ни у того, ни у другого. Только костылями-батничками (ну или питонофайлами через subprocess), лежащими в соседних открытых вкладках (или забинденными в выпадающий по F6 список у Notepad++). Но это, мягко говоря, не нативно.
6. «Выделение строки»
Мелкая, даже не фича, а так, фичушка. Интересно то, что в SublimeText она активируется по Ctrl+L, в то время как в Notepad++ этот хоткей уничтожает текущую строку. Может быть поэтому, а может быть и нет, мои руки, когда надо выделить строку, тянутся сначала к home, а потом к Shift+End. Это-то работает во всех программах, без внезапных последствий. (Update: со строками в ST2 удобнее некуда стало, стоит чуть копнуть доков)
7. «Поддержка Mercurial»
Тут всё печально. У SublimeText теоретически есть плагин. Но глюковат. Коммиты делает. На пушах — глюки авторизации. У Notepad++ нет вообще ничего. Пока опять же, костыли-батнички без вариантов. В общем, по теме «Поддержка Mercurial» им обоим надо учиться у PyCharm. Там конечно, сказка, начиная от создания проекта, с предложением вытянуть исходники из РСКВ, ну и т.д.
8. «Подсветка синтаксиса»
Понятно, что для распространённых типов всё есть, но… При открытии fb2 у Notepad++ мне надо постоянно лезть в меню и нажимать «ну раскрась хотя бы как xml», В SublimeText же один раз нажал «Open all with current selection as..» и всё. Подозреваю, что в Notepad++ подобное тоже может быть, но так как за многие месяцы бессонных ночей ничего не найдено, то юзабилити проиграно, поэтому в этом пункте SublimeText победил.
9. «Комментирование строк»
Ничья. Что один, что другой умеют ставить разный символ комментирования в зависимости от типа открытого файла. Приятно.
10. «Закладки»
Закладки — странная и больная тема. Вспомним то, о чём в приличном обществе уже давно не говорят, о Delphi. Не смотря на все эти унылые шутки про плохо закопанный труп и так далее, закладки в ней были самые Ъ. Ctrl+цифра. В абсолютном большинстве же остальных ide и просто редакторов (SublimeText и Notepad++ не исключение, как и PyDev`ы всякие) используется противоположенная схема: ну не удобно сначала наделать 10 закладок, а потом по очереди хоткеем их перебирать. Не-у-доб-но. Неужели перепрыгивание с допустим второй закладки на девятую стоит семи нажатий на F2 (ну или трёх на Shift+F2, да вроде меньше нажатий, но занимать часть мозга постоянным подсчётом в какую сторону быстрее листать закладки? Буэээ). Ведь хоткей Ctrl+2 сразу бы переносил на вторую закладку, а Ctrl+9 сразу на девятую. И удобно для запоминания, и пальцам легко. Почему отказались от такой схемы? Непонятно. Ладно бы освободившиеся кнопки использовались под что-то полезное. Так нет, в половине программ они вообще ничего не делают, во второй половине забиндены на какую-то малополезную хрень. Давали бы тогда по табам переключать (как в браузерах, например). Но, неа. Update: Не помню с какой именно версии, но бетасборки ST2 по «Alt+цифра» переходят по вкладкам, а «Ctrl+цифра» — по layuot`ам.

Немного общих слов.
Конечно, SublimeText умеет ещё кучу полезных свойств, не отмеченных выше. От удобного написания плагинов к нему и MiniMap до разных мелочей, которые открываются по мере использования. Например, автогенерация закрывающегося тега, скобок, всяких разных кавычек. Приятное меню для поиска и замены. Через контекстное меню можно открыть урл, даже если он не оформлен как урл (впрочем, Notepad++ с урлами тоже так может). Плюс ещё куча других мелких полезностей, одних я просто пока не изучил, про другие уже лень печатать. Это всё не важно. Важно то, что SublimeText целостен что ли. Его хочется изучать и настраивать его плюшки. Потому что, взять какой-нибудь Eric или Monkey Studio IDE — они какие-то аляповатые, производят впечатление наколенной поделки. Наверняка, в их внутренностях есть какие-никакие killer-фичи, но… их открываешь, потыкаешь немного. И закрываешь навсегда. В отличие от.
Ну и кстати да, SublimeText2 хоть и официально до сих пор в бете, он очень стабилен и с точки зрения функциональности «быстрее-выше-сильнее».

Advertisements

2 responses to “SublimeText сквозь призму некоторых других редакторов

Обсуждение закрыто.