Решил я наконец-то попробовать этот ваш Sublime Text. После нескольких недель использования редактора, мной был вынесен вердикт, что штука эта весьма годная. В данном посте я в двух словах расскажу о том, что же собой представляет Sublime Text, поделюсь впечатлениями от работы с ним, а также выложу свою шпаргалку по основным хоткеям.
Что такое Sublime Text?
Если вдруг кто-то из читателей не в курсе, Sublime Text — это такой легковесный текстовый редактор для программистов. Что-то вроде Vim , только с человеческим интерфейсом и из коробки умеет заметно больше. Также можно рассматривать Sublime Text в качестве легковесной IDE. До уровня IntelliJ IDEA , CLion или PyCharm ему, конечно, как до луны. Зато для всевозможной эзотерики вроде Go , Erlang и Haskell работает шикарно.
Многие оценят легковесность редактора и скорость его работы. Sublime Text просто летает, в том числе на проектах в миллион строк кода на хардкорном С++ c Boost’ом и вот этим всем. При этом саблайм имеет очень низкий порог вхождения, чего о Vim, к примеру, сказать никак нельзя. Изучить основные сочетания клавиш и начать фигачить код можно буквально за 15 минут.
Мне лично очень понравилась фирменная превьюшка кода, расположенная справа, и, конечно же, возможность редактировать текст при помощи нескольких курсоров. Еще из фишек есть подсветка и автокомплит практически чего угодно, неплохой поиск по проекту безо всяких там find и grep, автоматический вордврап по заданной ширине строки, спелчекер, поддержка разных кодировок и переносов строк, настраиваемая ширина отступов. Можно писать плагины на Python (ура, нормальный язык, а не как в Vim!). Плюс есть гибкая настройка шрифтов и цветовых схем. Кстати, о схемах — по дэфолту используется темная тема m/ .
Не совсем явный момент при использовании Sublime Text — возможность открывать не файлы, а каталоги. Делается это при помощи File → Open Folder, или путем передачи имени каталога в качестве аргумента при запуске редактора из bash. При этом у вас не только появляется очень симпатичное дерево каталогов в сайдбаре слева, но и, к примеру, намного круче начинает работать поиск файла по имени (Ctr+P).
Работает все это хозяйство на Windows, Linux и OS X.
Стоит Sublime Text всего лишь 70$. Как мне кажется, цена вполне справедливая. При этом самые жадные котики могут ничего не платить. Sublime Text будет работать, как ни в чем ни бывало, лишь изредка предлагая купить лицензию.
В первом приближении дела обстоят как-то так. Давайте теперь познакомимся с основными хоткеями.
Сочетания клавиш
Как обычно, далее предполагается, что про всякие Ctr+C, Ctr+V и Ctr+S вы знаете, поэтому эти хоткеи не упоминаются. Учтите также, что перечень хоткеев не отражает всех возможностей Sublime Text. Например, в диалоге открытия нового файла (Ctr+O) предусмотрен весьма удобный автокомплит имен файлов.
Лэйауты:
Shift + Alt + 1 | Одна группа вкладок |
Shift + Alt + 2..4 | От 2 до 4 столбцов |
Shift + Alt + 5 | Типа табличка 2 на 2 |
Shift + Alt + 8/9 | В 2 или 3 строки |
Ctr + циферка | Перейти на лайаут под заданным номером |
Окна:
Ctr + Shift + N | Новое окно |
Ctr + Shift + W | Закрыть окно |
Табы:
Ctr + N | Новая вкладка |
Ctr + PgUp/PgDown | Переход между табами |
Ctr + W | Закрыть вкладку |
Alt + циферка | Перейти к табу с номером |
Ctr + Shift + N | Перенести таб на лайаут с заданным номером |
Выделение:
Ctr + D | Выделение слов с созданием новых курсоров |
Ctr + U | Если в результате выделения поставились лищние курсоры |
Ctr + Shift + пробел | Выделить текущий скоуп |
Поиск:
Ctr + F | Поиск в текущем файле |
Ctr + E | Использовать выделенное для поиска |
F3 / Shift + F3 | Искать вперед/назад в текущем файле |
Ctr + Shift + F | Поиск по нескольким файлам |
F4 / Shift + F4 | Перемещение по результатам поиска в файлах |
Alt + R | В диалоге поиска: вкл/выкл регулярные выражения |
Alt + С | В диалоге поиска: вкл/выкл case sensitivity |
Alt + F3 | Найти все, везде поставить курсоры |
Замена:
Ctr + H | Диалог замены текста |
Ctr + Alt + Enter | В диалоге замены: заменить все |
Переходы:
Ctr + G | Перейти к строке с заданным номером |
Ctr + M | Переход к парной скобке |
Ctr + P | Перейти к файлу по его имени (с превью в редакторе!) |
Ctr + R | Переход к методу или классу по имени в текущем файле |
Alt + O | Переключение между .c и .h файлами |
Ctr + Shift + R | ST 3: Переход к символу по имени во всем проекте |
F12 | ST 3: Перейти к определению того, что под курсором |
Alt + − | ST 3: Вернуться туда, откуда пришли |
Alt + Shift + − | ST 3: Обратное действие к предыдущему пункту |
Закладки:
Ctr + F2 | Поставить/снять закладку |
F2 / Shift + F2 | Предыдущая/следующая закладка в рамках одного файла |
Ctr + Shift + F2 | Снять все закладки в рамках текущего файла |
Фолдинг:
Ctr + Shift + [ | Свернуть код |
Ctr + Shift + ] | Развернуть код |
Ctr + K + J | Развернуть все, что свернуто |
Отступы:
Ctr + ] | Увеличить отступ |
Ctr + [ | Уменьшить отступ |
Комментирование:
Ctr + / | Закомментировать/раскомментировать код |
Ctr + Shift + / | То же самое, но использовать блочный комментарий |
Макросы:
Ctr + Alt + Q | Начать/закончить записывать макрос |
Ctr + Shift + Alt + Q | Выполнить записанный макрос |
Курсоры:
Ctr + клик | Создать новый курсор |
Alt + Shift + ↑↓ | Создание новых курсоров выше/ниже |
Ctr + Shift + L | Для каждой выделенной строки создаться свой курсор |
Некоторые преобразования текста:
F9 | Сортировка строк |
Ctr + F9 | Сортировка строк с учетом регистра |
Ctr + K + L | Привести текст к нижнему регистру |
Ctr + K + U | Привести текст к верхнему регистру |
Интерфейс:
F11 | Включить/выключить фулскрин режим |
Shift + F11 | Так называемые distraction free mode |
Ctr + K + B | Показать/скрыть сайдбар слева |
Ctr + колесико/+/− | Сделать шрифты больше/меньше |
Прочее:
F6 | Включить/выключить проверку орфографии |
Ctr + Shift + P | Поиск команды редактора по ее названию |
Ctr + ~ | Показать/скрыть Python-консоль |
По большому счету, это все!
Файл настроек
В контексте этой заметки нельзя не сказать и пару слов о файле настроек.
Искать его следует где-то здесь:
Если такого файла нет, ничего страшного — просто создайте его.
Вот содержимое моего файла:
«always_show_minimap_viewport»: true,
«draw_centered»: true,
«word_wrap»: true,
«wrap_width»: 80,
«font_size»: 10,
«rulers»:
[
80
],
«update_check»: false
}
Как видите, это обычный JSON. Приведенные настройки говорят саблайму (1) всегда подсвечивать на minimap справа то место, на которое мы сейчас смотрим, (2) рендерить текст по центру, а не по левой стороне (3) отображать слова на следующей строчке, если строка не умещается в 80 символов по ширине, (4) использовать шрифт размером 10 попугаев, (5) отмечать вертикальной линией ширину строки в 80 символов и (6) не проверять наличие новых версий редактора. В такой конфигурации получается что-то очень похожее на distraction free mode, только с табами, номерами строк и отображением закладок. Все изменения настроек саблайм подхватывает на лету, без перезапуска редактора.
Заключение
Хотелось бы отметить несколько недостатков Sublime Text. Возможно, часть из них уже исправлена в Sublime Text 3. Я его пока не смотрел, так как во время написания поста третья версия еще находилась в бете.
Дополнение: Sublime Text 3 я в итоге посмотрел и перешел на него, а также дописал в приведенную выше шпаргалку пару новых хоткеев.
Очень не хватает просмотра git blame
рядом с номерами строк, как в IDEA. Из коробки нет поддержки синтаксиса Rust , Kotlin и GLSL . Из коробки нет истории буфера обмена. Нет встроенной поддержки TODO-списков. Нельзя посмотреть список закладок, нельзя давать закладкам имена. Не удалось найти хоткеев для перемещения вкладок влево и вправо, ровно как и для изменения ширины лайаутов. Встроенный шелл был бы не лишним.
Все это, конечно, не то, чтобы очень критичные проблемы. К тому же, вроде как некоторые из их можно решить при помощи плагинов. Но я лично был бы не против увидеть поддержку всего этого функционала из коробки в будущих версиях редактора.
В целом впечатления от Sublime Text у меня очень положительные. Я полностью заменил им Geany, а Vim теперь использую только для задач вроде изменения пары строчек в конфиге по SSH. Интересно, что при написании кода в саблайме чувствуешь себя просто мега реактивным. Ничего лишнего не отвлекает, все сосредоточение только на коде. Любопытное чувство, попробуйте!
А пользуетесь ли вы Sublime Text? Если да, то что вы в нем пишите и каковы ваши впечатления от редактора?
Дополнение: Небольшая подборка полезных плагинов — Package Control (через него ставится все остальное), Sublime Git, Makrdown Preview, GoSublime, Anaconda, SublimeHaskell, PlainTasks, OpenGL Shading Language (GLSL).