Sublime Text 2 — советы и хитрости

  •   05.03.2013
  •   6 комментариев
  •   Кодинг

Эта статья является заключительной в серии статей о замечательном редакторе Sublime Text 2.

Помимо общего удобства использования, в Sublime есть множество радующих глаз мелких фишек. Например, сессии, в рамках которых сохраняются не только открытые вкладки, но изменения в несохраненных файлах.

Sublime Text 2 - советы и хитрости

Также полезной оказывается возможность просмотра файлов без их открытия (в процессе хождения по дереву файлов в боковой панели). Прокрутка в редакторе может осуществляться ниже последней строки, то есть последнюю строку можно сфокусировать в средней части окна. И подобных плюшек — огромное множество. Некоторые тонкости и неочевидные фишки работы с Sublime я и разберу в этой статье.

Регулярные выражения в Sublime Text 2

И в первую очередь мы разберем на примере, как использовать регулярные выражения при работе с Sublime Text 2. Регулярные выражения — это мощнейший инструмент, хорошо известный программистам. Однако он может быть полезен не только программистам, но и всем людям, работающим с кодом или простым текстом. Регэкспы (от RegExp) способны значительно облегчить вам жизнь и автоматизировать рутинные операции. И они просто незаменимы при необходимости поиска и замены текста по определенным признакам.

«Капитализация» текста

Предположим, нам нужно прописать с большой буквы каждое слово текста, заключенного в определенные теги. Как это можно сделать? Можно найти каждое вхождение тега и вручную изменить его содержимое. Но это долгий и утомительный способ, поэтому мы пойдем другим путем.

Маленькая хитрость

В Sublime есть инструмент для подобного управления регистром символов, и находится он в меню по адресу Edit → Convert Case → Title Case. Тот же инструмент доступен при поиске в командной панели — нажмите Ctrl+Shift+P и наберите там слово title, либо наберите слово case, чтобы увидеть другие доступные варианты манипуляций с регистром. Естественно, предварительно нужно выделить текст, с которым вы хотите производить манипуляции.

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

И тут нам на помощь приходят регулярные выражения.

Нажмите Ctrl+I для использования последовательного поиска (я уже писал о нем в одной из предыдущих статей). В появившейся панели в нижней части редактора можно набирать поисковые запросы в том числе с использованием регулярных выражений. Например, для нахождения всех вхождений тега h2 необходимо ввести следующую строку:

<h2>.+</h2>

В примере выше точка олицетворяет собой любой символ, а знак + указывает, что допустимо любое количество вхождений указанного символа. Подробный синтаксис регулярных выражений вы можете найти на специализированных ресурсах (начать можно с уже упомянутой страницы в Википедии).

Однако по умолчанию регулярные выражения в поисковой форме не обрабатываются. Для того, чтобы они заработали, необходимо нажать кнопочку с символом * на той же поисковой панели. Того же эффекта можно добиться, нажав Ctrl+R (при этом поисковая панель должна быть активна).

Теперь Sublime должен подсветить ближайшее вхождение заданной последовательности.

Последовательный поиск с использованием регулярных выражений в Sublime Text 2

Для того же, чтобы выделить все вхождения этой последовательности, необходимо (при активной поисковой строке) нажать Alt+Enter. При этом каждое вхождение будет выделено отдельно, используются уже знакомые нам по одной из предыдущих статей множественные курсоры.

Множественное выделение с использованием регулярных выражений в Sublime Text 2

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

Операция Title Case в Sublime Text 2

Это происходит потому, что между открывающим тегом h2 и первым словом заголовка нет пробела, соответственно вся последовательность воспринимается редактором как одно слово. Но эту неприяность легко исправить, нужно лишь слегка изменить наше регулярное выражение:

(?<=<h2>).+(?=</h2>)

Тем самым мы ищем ту же последовательность, но исключаем из выделения сам тег, оставляя только его содержимое:

Выделение содержимого тега в Sublime Text 2

И если после этого выполнить команду Title Case, то на этот раз мы добьемся именно того эффекта, которого хотели:

Замена символов в Sublime Text 2

Естественно, это далеко не единственный способ использования регулярных выражений. Но цель этой статьи — не разобрать все их разнообразие, а показать, что используя регэкспы можно значительно облегчить себе жизнь, а также показать, как именно осуществляется работа с регулярными выражениями в Sublime Text 2. Естественно, использовать их можно не только на панели последовательного поиска (Ctrl+I), но также и при обычном поиске (Ctrl+F, либо при поиске и замене (Ctrl+H).

Vintage mode в Sublime Text 2

Суровые пользователи сурового консольного редактора Vi возможно будут рады, узнав, что в Sublime Text 2 есть режим работы Vintage mode, который позволяет в некоторых моментах заставить вести себя как Vi. Впрочем, этот режим возможно придется по душе и менее суровым пользователям, которые не использовали Vi, но просто хотят перейти на новый уровень работы с редактором.

Первое, что нужно сделать — это активировать Vintage mode в Sublime (по умолчанию он отключен). Сделать это можно ручной правкой конфигов, но гораздо проще это сделать при помощи уже знакомого нам по одной из предыщущих статей Package Control. Итак, Ctrl+Shift+PEnable PackageVintage.

На первый взгляд ничего не изменилось, но стоит нажать клавишу Esc, и текстовый курсор изменит свой внешний вид, что сигнализирует нам о том, что редактор работает в Vintage mode.

В этом режиме появился новый способ перемещения текстового курсора по коду (наряду с курсорными клавишами) — для перемещения курсора вверх используется клавиша k, вниз — j, вправо — l, и влево — h. Какой в этом смысл и чем не угодили курсорные клавиши? А смысл в том, чтобы ваши руки не покидали центральной части клавиатуры (благодаря чему скорость работы увеличивается).

Мало того, подобным способом можно перемещаться по коду с заданным шагом. Например, последовательное нажатие 5 и j переместит курсор на 5 позиций вниз.

Подобные последовательности из нескольких символов позволяют при должных знаниях и сноровке вытворять с текстом чудеса за доли секунды. Так, например, последовательное нажатие v, i и w сначала переключит редактор в так называемый визуальный режим, а затем выделит слово под курсором (тот же эффект достигается в Sublime нажатием Ctrl+D).

Если курсор установлен на последовательности символов, заключенных в одинарные кавычки, то последовательное нажатие клавиш c (от слова «change»), i (от «inner») и ' позволит изменить содержимое, заключенное в кавычки (удалив его и установив курсор между кавычек). Точно так же последовательное нажатие v, i и ' в том же случае просто выделит содержимое кавычек. Конечно, если между кавычками заключено только одно слово, то Ctrl+D может показаться более удобным способом для выделения, но если между кавычками заключено несколько слов (или даже несколько строк), то «Vintage mode» явно выигрывает в скорости. Естественно, точно так же можно менять содержимое, заключенное, например, между двойными кавычками, либо в скобках.

Приведу еще несколько примеров использования Vintage mode.

Последовательное нажатие клавиш c+5+w («change 5 words») позволит изменить 5 слов, следующие после курсора. А последовательность v+5+w вполне предсказуемо выделит 5 слов, следующих после курсора.

Последовательность v+t+, выделит весь текст от курсора до («till») ближайшей запятой. А последовательность v+f+, произведет такое же выделение, но включит в него еще и саму запятую.

Нажатие клавиши A переместит курсор в конец строки. Для перемещения в начало строки нужно нажать клавишу I. Клавиша V выделит всю текущую строку. Для копирования выделенного текста используется Y («yank»), а для вставки — P («paste»). Для удаления выделенного текста достаточно нажать D. Для удаления текущей строки нужно последовательно нажать D+D (именно так, дважды). Из чего вполне логично следует, что для копирования текущей строки нужно последовательно нажать Y+Y.

Клавиша . используется для повторения последнего действия. Например, если вы скопировали и вставили какую-то строку, то нажатие на . вставит еще одну такую же строку.

На первый взгляд может показаться, что такой подход чрезмерно гиковский и слишком сложный в освоении, но на практике оказывается, что такие комбинации в силу их логичности для многих людей (особенно владеющих английским) запомнить легче, чем бесчисленное множество клавиатурных сокращений обычного рабочего режима в Sublime. Дело привычки.
Мало того, никто не заставляет отказываться от стандартных приемов работы в Sublime при использовании Vintage mode. Можно использовать оба режима работы одновременно (стандартные возможности по-прежнему работают и в Vintage mode), и такой подход может оказаться весьма эффективным.

Копирование пути к текущему файлу в Sublime Text 2

Казалось бы, копирование пути к текущему файлу — это простая задача, с которой справляется большинство нормальных редакторов. Однако Sublime Text 2 предоставляет множество вариантов подобного копирования, поэтому я вынес эту возможность отдельным пунктом.

Если вы вызовите командную панель (Ctrl+Shift+P) и наберете в ней слово copy, то сможете увидеть все многообразие предоставляемых вариантов:

Копирование пути к текущему файлу в Sublime Text 2

Пройдусь по некоторым из доступных вариантов.

  • File: Copy Name — копирование имени файла.
  • File: Copy Path — копирование полного пути к файлу (от корня файловой системы).
  • File: Copy Path From Project — копирование пути к файлу от корневой папки текущего проекта.
  • File: Copy as Tag a — копирование пути к файлу в виде тега a. Очень удобно, если вам нужно вставить куда-то ссылку на текущий файл.
  • File: Copy as Tag style — копирование в виде ссылки на файл стилей. Очень удобно, если вы редактируете файл стилей и хотите вставить на него ссылку в html/php файл.

Мало того, этот список может меняться в зависимости от типа активного файла. Например, при редактировании js-файла в этом списке также появится пункт File: Copy as Tag script, при выборе которого в буфер обмена будет скопирован путь к скрипту в соответствующем формате (опять же для вставки в html/php файл).

Проекты в Sublime Text 2

Организация работы с проектами — это очередное достоинство Sublime Text 2 в сравнении с другими редакторами.

Управление проектами в Sublime Text 2

Создать проект в Sublime просто — для этого достаточно открыть редактор, в командной панели (Ctrl+Shift+P) набрать слово project и выбрать пункт Project: Save As. Для добавления папок в текущий проект можно воспользоваться пунктом Project: Add Folder. Если же выбрать пункт Project: Edit, то можно вручную отредактировать параметры текущего проекта.

Например, при работе с CMS Joomla мне не нужно работать со всеми файлами ядра. Так зачем же отображать в дереве файлов все папки, если можно оставить только те, с которыми реально ведется работа? Сделать это можно, отредактировав список доступных в проекте папок (Project: Edit):

Управление проектами в Sublime Text 2

Причем, как обычно, все изменения в Sublime применяются мгновенно — сразу же после сохранения нового списка папок вы увидите перемены на боковой панели.

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

Исключение папок и файлов из проекта в Sublime Text 2

А еще в Sublime можно для каждого проекта задать свои собственные локальные настройки — размер табуляции, расстояние между строками и т.п. — все, что угодно. Подсмотреть доступные настройки можно в файле дефолтных настроек редактора (Preferences → Settings — Default).

Локальные настройки проекта в Sublime Text 2

Переключаться между различными проектами в Sublime очень просто — для этого достаточно нажать комбинацию Ctrl+Alt+P и выбрать нужный проект в общем списке доступных проектов (в который автоматически попадают все созданные в Sublime проекты). Естественно, если проектов много, то совсем необязательно выискивать нужный в общем списке, на этой панели работает нечеткий поиск. Достаточно набрать несколько букв из названия проекта и нажать Enter.

Еще чудеснее, что при подобном переключении между проектами в каждом проекте сохраняется своя собственная сессия. То есть при переключении между разными проектами в них будут сохраняться открытые вкладки и даже изменения в несохраненных файлах.

Разделение окна в Sublime Text 2

Еще одна крутая фишка в Sublime Text 2 — это возможность разделять окно на несколько частей, создавая при этом подобие тайловой структуры. Вернее, это даже круче обычной тайловой структуры, поскольку в каждой части при подобном разделении можно не только открыть отдельный файл, но для каждой части также может иметься свой набор вкладок (которые можно перетаскивать между различными элементами мозаичной структуры).

Разделение окна в Sublime Text 2

Выбрать желаемый тип компоновки можно в меню в группе пунктов View → Layout, либо же используя цифровые клавиши с зажатыми Shift+Alt. Можно перетягивать вкладки из одной группы в другую при помощи ПКМ, либо же использовать для этого цифровые клавиши с зажатыми Shift+Ctrl. Фокус между разными группами можно переключать не только мышью, но и все теми же цифровыми клавишами с зажатым Ctrl.

Если вам мало дефолтных вариантов компоновки, вы можете добавить свои собственные. Например, разделить окно на две неравные части — одна будет занимать треть окна, вторая соответственно две трети. Загляните в файл дефолтных клавиатурных комбинаций и обратите внимание на команды set_layout — вы можете по аналогии добавить в файл пользовательских комбинаций свои варианты.

Работа в режиме room-редактора в Sublime Text 2

Если вы знакомы с таким понятием, как room-редакторы, то будете приятно удивлены, что в Sublime есть и подобная возможность. Для незнающих скажу, что в подобном режиме редактор разворачивается на весь экран, оставляя только пространство для работы. Скрываются все отвлекающие внимание элементы — как системные, так и собственно элементы управления редактором. На эту тему я даже когда-то писал отдельную статью.

Чтобы перевести Sublime в такой режим, достаточно нажать Shift+F11.

Режим room-редактора в Sublime Text 2

Обратите внимание, что даже в полноэкранном режиме текст не растягивается на всю ширину экрана (что было бы неудобно), а располагается в максимально комфортном для работы виде.

Не знаю как вам, а мне работать в таком режиме очень комфортно, особенно если долгое время нужно работать с кодом/текстом, ни на что другое не отвлекаясь — например, при написании статей.

На этом, пожалуй, все.
Я вам рассказал об основных нюансах работы с Sublime Text 2. Не забывайте, что самый лучший способ научиться работе в редакторе — это работать с ним каждый день, по возможности используя все заложенные в него фишки. Постарайтесь при этом минимально использовать мышь и прочие «медленные» приемы работы, переключайтесь на «быструю» работу с редактором, к которой Sublime очень располагает. Если вам мало изложенной в моих статьях информации и вы достаточно хорошо владеете английским — можете также заглянуть в официальную и неофициальную документацию по проекту.

Рекомендую также ознакомиться с другими моими статьями из цикла о Sublime, если вы до сих пор этого не сделали: