Главная Программы

Sublime Text - редактор кода, в который нельзя не влюбиться

Пишу этот пост под большим впечатлением. Не прошло и недели, как я узнал про замечательный текстовый редактор под названием Sublime Text. Если описать одним словом тот эффект, который он на меня произвел, то это просто: «Вау!».

Думаю, что настало время сменить старый добрый Rapid PHP, которым я пользовался почти 4 года. Вообще-то я хотел перейти на Notepad++, но, узнав про Sublime Text, оказалось, что последний гораздо лучше.

Sublime Text

Что мне понравилось больше всего

В Sublime Text большое количество полезных возможностей. Но вот что я хотел бы выделить особенно:

  • Приятный, легкий, минималистичный интерфейс.
  • Очень гибко настраивается.
  • Множественное выделение. Вот это просто архиполезнейшая вещь, которую я встречаю впервые. Как она работает — зажимаешь Ctrl и ставишь в нужные места множество курсоров или выделяешь разные участки текста. Теперь при вводе с клавиатуры текст набирается одновременно во всех этих местах.

    Либо еще один наглядный пример. Нужно создать список из нескольких пунктов в виде ссылок. Зажимая колесо мыши, выделяю все пункты (левая часть скриншота, там видно, что в конце каждой выделенной строки стоит свой курсор). Нажимаю заданную горячую клавишу и оппа — тегами обрамляется каждая выделенная строка (правая часть скриншота):

    Множественное выделение в Sublime Text

  • Возможность создания любых сниппетов и вставки их хоть по горячим клавишами, хоть по буквенным сокращениям (в стиле Zen Coding).
  • Возможность назначения горячих клавиш абсолютно на любое действие.
  • В сниппетах можно задать, где будет находится курсор при вставке, задать плейсхолдеры и переключение в нужные участки сниппета Tab’ом.
  • Наличие миникарты кода для удобного перемещения.
  • Все мои личные настройки хранятся в отдельной папке.
  • Умное комментирование/раскомментирование кода по горячим клавишам.
  • Возможность отображения скрытых символов (пробелы, табы) только при выделении кода.
  • Постоянно растущее сообщество пользователей, которые пишут плагины под любые нужды.

В общем, по функционалу Sublime Text легко заменяет и Rapid PHP, и Notepad++, и даже превосходит их.

Чего не хватает

  • Графического интерфейса для создания цветовых схем. Редактировать xml-файл, чтобы оформить под себя — это крайне неудобно и нудно, отнимает кучу времени.
  • Вставки изображения через проводник Windows. Т. е. указываешь изображение, и программа автоматически подставляет в тег <img> путь к нему, а также ширину и высоту (вот бы кто плагин написал).
  • Добавления слов в словарь для проверки орфографии.
  • Кликабельности ссылок.

Недостатки

  • Время загрузки программы. Если сравнивать Sublime Text, Notepad++ и Rapid PHP, то Notepad++ открывается просто мгновенно, Sublime Text примерно за 1 секунду, а Rapid PHP секунды за 3.
  • Платность. Стоит 59 баксов. С одной стороны не мало для текстового редактора, с другой — она того стоит. Хотя можно пользоваться и вечным триалом (периодически при сохранении файлов выскакивает предложение купить).

Других минусов я пока не смог найти. По сути эти недостатки — мелочь, которая с лихвой компенсируется плюсами программы.

P.S. Кстати, Sublime Text — это мультиплатформенный аналог редактора TextMate на Mac OS X. Есть версии для Windows, Linux и OS X. Поддерживает цветовые схемы от TextMate.

Комментарии (153)

  1. вот так код (по умолчанию) выглядит в саблайме.
    а вот так в TopStyle
    Я использую «ступенчатую» структуру css-кода и для этого в саблайме придётся делать лишние телодвижения, но это можно впринципе настроить и в снипетах.
    Однако в саблайме невозможно нормально управлять цветами и нет быстрого перехода к имени класса (это видно на панельке слева). Причём в topstyle можно делать свои наборы цветов, он автоматом показывает нормальную палитру с выбором разных наборов самих палитр, показывает похожие цвета и т. д. Ctrl+клик на ссылки (например ссылку на картинку фона) откроет её в просмотрщике. и самое главное — есть небольшое окошко для визуализации внешнего вида редактируемого класса. плюс ко всему Prefixr, встроеный в программу по умолчанию — можно писать чистый css3 а потом просто автоматически добавить свойства с префиксами.
    В тоже время в саблайме мне очень понравилось автозавершение, очень понравилось…

    • Ясно теперь. У нас с тобой совершенно разный подход к верстке.

      • Да. Но это касается скорее css. В html думаю подходы схожи у всех, кто этим занимается постоянно)) и однозначно я пересяду на саблайм.
        P. S. Вот сейчас обнаружил что при мультивыделении если закрыть (нечаяно нажал Ctrl+Shift+W), а потом открыть программу — позиции всех курсоров сохраняются… КРУТО!

      • В Sublime Text 2 есть Prefixr

        спасибо. поставил. вроде так же работает.

        Вопрос с более продвинутым пользователям. Можно ли назначать действия клавиш.
        хочу сделать, чтобы в css закрывающая скобка ставилась с табуляцией. написал в. sublime-keymap

        [
        { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{nt$0nt}"}, "context":
        		[
        			{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
        			{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
        			{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:t| |\)|]|\}|$)", "match_all": true }
        		]
        	}
        ]

        всё работает, но во всех синтаксисах. Наверняка сделать отдельные клавиши для css проще чем я думаю. Буду благодарен за подсказку. т.к. в доках на оффсайте я не смог (с инглишем тяжело у меня) как это сделать.

        • Разобрался с назначением клавиш для отдельного синтаксиса (CSS)
          получилось вот такое содержимое файла пользовательских хоткеев:

          [
          { "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{nt$0nt}"}, "context":
          		[
          			{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
          			{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
          			{ "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },
          			{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:t| |\)|]|\}|$)", "match_all": true }
          		]
          	}
          ]

          Ключевая строка:

          { "key": "selector", "operator": "equal", "operand": "source.css - meta.selector.css", "match_all": true },

          не знаю как и почему, но работает как надо)

  2. Очень понравилась Ваша статья! Скажите, пожалуйста, возможно ли в ST 2 реализовать горизонтальную прокрутку? Просто если длинный код не удобно, когда он разбивается на две строки.

  3. Автор, комментаторы, подскажите, что можно придумать с фолдингом? У саблайма он мягко говоря довольно примитивный. Свернуть участок HTML-кода если нарушена табуляция иерархии внутри просто невозможно. Нужно обязательно чтобы дочернее содержимое не выдавалось вперед, иначе сворачиваться будет часть содержимого.

    И главный вопрос, в ST2 разве нет клавиатурного сочетания для перемещения от открывающей части HTML-тега к закрывающей при положении курсора на этих частях тега? Ведь если имеется очень увесистый тег-родитель, занимающий два экрана, не скроллить же визуально определяя конец? Если нет сочетания клавиш (по крайней мере я не нашел такового), может имеется какой-то плагин? Который в отличие от BracketHighlighter умеет видеть теги ниже видимых на экране. Он тупо не видит, что происходит дальше экрана, и подсвечивает закрывающую скобку открывающей части тега, как закрывающую часть :)

  4. К редыдущему комментарию, про BracketHighlighter я наврал, на самом деле видит. Т. е. сочетания для выделения тега и содержимого тега работают. Перебивалось саблаймом его сочетание клавиш alt+down и alt+up :) Вопрос про фолдинг остается открытым.

    • С фолдингом ничем не могу помочь, к сожалению. Никогда им не пользовался.

      Спасибо за подсказку по переходу по тегу! Очень не хватало этой возможности. BracketHighlighter у меня давно установлен, а про эти горячие клавиши и не знал =)

  5. Dimox, спасибо за обзор и перевод менюшки, редактор действительно крутецкий!
    Такой вопрос, никак не могу добиться такого автокомплита в CSS — img.ii4.ru/images/2012/11/04/285 248_kiss_67kb.png
    у меня, почему-то просто свойство выводит — img.ii4.ru/images/2012/11/04/285 249_kiss_7kb.png
    Подскажи, пожалуйста, если знаешь в чём причина.
    Спасибо.

  6. Поделитесь пожалуйста файлами .aff и .dic для проверки орфографии. Не могу найти адекватные.

  7. Никто не в курсе, можно ли разукрасить вот эту штучку http://clip2net.com/clip/m150515/1 352 841 978-clip-18kb.png?
    Никак не могу найти где она определена.

  8. Кстати еще вопрос, есть ли вменяемый и свежий набор сниппетов для jQuery? Через Package Control либо несколько штук ставятся, либо какой-то пак, но устанавливается с ошибкой и через точку написанные в нем плагины табится и в автокомплите всплывать отказываются)

  9. В Notepad++ есть плагин позволяющий открывать версии новые из бекупчика и сравнивать разные версии 1 и того же скрипта (Compare). Весьма полезная штука)
    есть ли какой-либо аналог в ST3?

  10. Dimox, поделесь пожалуйста своей цветовой схемой, ту которую ты выкладывал ранее удалили =(
    Заранее спасибо!

  11. Dimox, в Notepad++ есть такие функции как удалить пробелы в начале и конце строки, и удаление пустых строк. А в Sublime Text такое есть не в курсе?
    Просто сколько рыл, ничего подобного не нашел, а так как редактор использую ещё и для редактирования статей, их очень не хватает.

  12. Здравствуйте. Как в Sublime Text заменить РАЗНЫЕ куски текста на одинаковый?
    Например: есть тысяча страниц с div в котором тысяча разных текстов

    надо заменить содержимое этого div на одинаковый текст

    то есть в поле FIND разный текст хотелось бы заменять например звёздочкой. Типа
    div class="one"> *(найдётся любой текст в этом диве)

  13. если для этого нужно т.н. «регулярное выражение», то не нашел символа, заменяющего всё.

Ваш комментарий