Sublime Text 2 FAQ

По темі:


Sublime Text 2 FAQSublime Text 2 FAQ

Пару місяців назад я випадково натрапив на масу позитивних відгуків про текстовому редакторі Sublime Text 2.

Спробувавши його в справі, я не розчарувався. Тепер це мій основний робочий інструмент.

Sublime Text 2 - це платний текстовий редактор, написаний на C ++, який:

  • Працює в Linux, OS X і Windows
  • Володіє пристойною швидкістю роботи
  • Приємним інтерфейсом (включаючи всілякі анімації)
  • Гнучко настроюється (правда, не в GUI, а в json-конфігах)
  • Має безліч плагінів, число яких зростає як на дріжджах
  • Підтримує VIM-режим
  • Використовує fuzzy-пошук

Активація і заборона оновлення

Все, що для цього потрібно, це піти в Preferences -> Settings - User і додати туди наступний рядок:

"update_check": false

Так само можо заблокувати сайт оновлень через файлик hosts , просто додайте наступний текст:

## STOP SUBLIMETEXT UPDATES
127.0.0.1 sublimetext.com
127.0.0.1 www.sublimetext.com

Ціна

Редактор умовно-безкоштовний або «умовно-платний» :) Варто 59 $ за ліцензію (якщо брати відразу багато - є знижка), але їм можна користуватися безкоштовно. У безкоштовному режимі раз в пару годин вискакує діалогове вікно з пропозицією редактор придбати, а також в заголовку вікна капс написано UNREGISTERED. Наскільки я знаю, інших відмінностей немає.

інтерфейс

Sublime Text 2 FAQSublime Text 2 FAQ

Одне з перших вражень про програму - вона красива з коробки. Правильно підібрані шрифти, колірна схема, плавні анімації (їх тут більше, ніж в більшості текстових редакторів і IDE). Все це має сенс, тому що в результаті радує око і не відволікає уваги. До тих пір, поки редактор не перевантажений плагінами, він має досить швидким відгуком, від чого я встиг відвикнути, використовуючи NetBeans.

Перше що кидається в очі - відсутність будь-якої панелі інструментів. Також я поки не зустрів жодного діалогового вікна, крім стандартних вікон збереження / відкриття файлу. Замість діалогових вікон використовуються «шари». Символи пробілу і tab-а відображаються тільки при виділенні тексту, але в налаштуваннях можна задати режим «завжди».

Справа по борту розташована карта коду. Своєрідний аналог прокручуванні сторінки у вигляді pixel-карти, яка вдає із себе стислий до ~ 100px по горизонталі код поточного файлу (включаючи підсвітку синтаксису). Допомагає в орієнтуванні по файлу, а також спрощує прокрутку сторінки, тому що діє аналогічно scrollbar-у. Складно напевно сказати «кілер-фича» це чи чергова «свистілки», але протягом усього часу використання у мене так і не виникло бажання прибрати її.

Зліва по борту може розташовуватися панель проекту і відкритих файлів (View -> Side bar -> Show side bar). Панель проекту - дерево підключених до проекту директорій з спрощеними можливостями файлового менеджера (наприклад є можливість створення нових файлів / папок, перейменування і видалення, але немає можливості переміщення #UPD виявляється є, через перейменування). Панель відкритих файлів мені не здалася зайвою або надмірно дублюючої функціонал табів. Таби звичніше, але коли їх стає занадто багато - знайти потрібний простіше за назвою саме в цій панелі.

Доступні повноекранний режим (F11) і "Distraction Free Mode" (Shift + F11). З першим, я думаю, все зрозуміло, а ось другий мені був в новинку. Цей режим вдає із себе повноекранний режим з власними настройками. Вперше перейшовши в нього вам доступні лише сам редактор коду, так рядок меню. У ній (у -> View) можна включити / відключити все потрібне / зайве. Зручний режим для глибокого занурення в роботу.

Режим вертикального виділення є однією з найважливіших функцій для просунутих текстових редакторів. І sublime не виняток. В Linux-версії він активується правою кнопкою миші при затиснутому шифт. Дуже зручно при швидких правки різного роду списків, розмітки і не тільки. Варто відзначити, що ST2 вміє шукати і заміняти за регулярними виразами, без чого було б складно розглядати його всерйоз.

Також варто було б відзначити - горизонтальний scroll. Якщо на вашій миші його немає, скористайтеся shift + вертикальний scroll. Як виявилося - дуже зручно. У статус панелі, крім помилок і поточної позиції курсора, доступні перемикачі поточного синтаксису файлу і розміру tab-а.

Іконки-кнопки для розкриття / згортання регіонів коду (функції, блоки, теги і т.д.) дещо не очевидні. Справа в тому, що хоч вони і розташовані, як і повинні, зліва від рядка коду, але, по-замовчуванню, відображаються лише по наведенню миші (це налаштовується). Доступні для безлічі структур, зокрема дуже порадувала можливість «згортання» SCSS-селектор.

Sublime надає масу можливостей для множинного виділення і правки. Тобто можна встановити курсор відразу в кілька місць і правити код синхронно (при цьому будуть працювати макроси, autocomplete, snippet-и, буфер обміну і т.д.). Мені дуже цього не вистачало в Netbeans-е. Встановити нову позицію курсора можна через ctrl + left_mouse_click. Або ctrl + left_double / _triple click (виділить слово / абзац цілком). Ці та інші комбінації клавіш і миші гнучко-настроюється.

Fuzzy пошук

Sublime Text 2 FAQSublime Text 2 FAQ

Одна з найбільш розрекламованих функцій редактора - нечіткий пошук. Він дозволяє знайти «modules / gallery / view / gallery / page.jade» вбивши лише «gapaja». Сказати, що це економить час - все одно, що нічого не сказати. У 99% випадків я відкриваю файли або знаходжу потрібну мені функцію по ось таким ось уривків, що нагадує якийсь східно-азіатський діалект :) З коробки доступні:

  • Ctrl + P - пошук по файлах проекту
  • Ctrl + R - пошук по функціям (по template-ам в XSLT, селекторам в CSS / SCSS і т.д.)
  • Ctrl + Shift + P - пошук по меню (а туди потрапляють, в тому числі, і нові функції з плагінів, тобто не обов'язково запам'ятовувати гарячі клавіші для рідко-використовуваних можливостей)
  • Ctrl +; - Пошук по словам. Наприклад, вбивши dbr, можна знайти, де ж ви забули прибрати службовий debugger в js-файлі
  • Ctrl + G - номер рядка (НЕ fuzzy-пошук, але, я думаю, тут йому саме місце)

Погравши з цими комбінаціями, ви можете звернути увагу на те, що ці режими можна комбінувати. Наприклад, вбивши gapaja @ gallery_list, ми потрапимо не в початок файлу, а відразу до mixin-у gallery_list.

Цей список може бути розширений плагінами. Про парі таких я розповім трохи нижче.

конфігурація

Всі налаштування здійснюються через правку json-конфігов. Зміни вступають в силу відразу ж після збереження файлу. Велика частина налаштувань, які вам можуть попастися (будь то сам редактор або ж його плагіни) розділені на 2 частини - default і user. Тобто кінцевому користувачеві слід змінювати саме user-конфіги, які по-замовчуванню, як правило, порожні.

Базові настройки редактора ви можете побачити вибравши в меню Preferences -> Settings-Default. Пробіжуся по самим ключовим:

  • word_separators - вираз для поділу слів. Наприклад, щоб при подвійному натисканні на PHP-змінної вона виділялася разом з $, цю опцію можна підправити ось так - "./ \\ () \" '-:,.; <> ~! @ #% ^ & * | + = [] {} `~?"
  • fade_fold_buttons - відображати fold-іконки (розкриття / приховування регіонів коду) тільки при наведенні миші
  • tab_size, translate_tabs_to_spaces - розмір tab-а і можливість використовувати замість tab-а прогалини
  • folder_exclude_patterns - масив масок для файлів / директорій, які будуть ігноруватися при роботі над проектами
  • trim_trailing_white_space_on_save - обрізати лідируючі прогалини при збереженні
  • show_tab_close_buttons - показувати «хрестики» на вкладках
  • draw_white_space - показувати символи пробілу і tab-а завжди або тільки при виділенні тексту
  • save_on_focus_lost - автоматично зберігатися при виборі іншого файлу або втрати фокусу у редактора
  • default_encoding - кодування за замовчуванням - «UTF-8»
  • fallback_encoding - кодування на випадок, якщо автоматично визначити не вдалося
  • auto_complete - вкл / викл «autocomplete». Оскільки ST2 НЕ IDE, то autocomplete з коробки працює за принципом - «Ось тобі все слова на сторінці, вибирай що хочеш». Багатьом це не подобається
  • hot_exit - за замовчуванням редактор закривається без підтвердження про збереження / не збереження змінених файлів. Він просто запам'ятовує їх стан і відкривається наче й не закривався зовсім. Така ж поведінка і при перемиканні проектів. Ця опція дозволяє задати стандартний режим
  • close_windows_when_empty - закривати програму при закритті всіх файлів
  • preview_on_click - по-замовчуванню, при виборі файлу в дереві проекту, він не створює для нього окремий таб, а просто показує його поверх поточного файлу. Можна внести пару змін і зберегти. Якщо ви хочете відкрити файл «повноцінно», то вам необхідно зробити double-click. За це поведінка і відповідає ця опція.

Це далеко не всі настройки, а тільки ті, з якими я зіткнувся чи мені здалися найбільш важливими для новачків. Такі опції як preview_on_click, hot_exit можуть «налякати», проте я б порекомендував спробувати їх в справі.

Гарячі клавіші

Sublime Text 2 FAQSublime Text 2 FAQ
Детальна карта гарячих клавіш Sublime Text 2 FAQ

Швидкий доступ змінюються за тим же принципом, що і всі інші настройки, і точно також вступають в силу відразу ж після збереження конфіга. У разі будь-якої помилки, на зразок неправильної комбінації клавіш, ви можете дізнатися подробиці в консолі (Ctrl + `). Там взагалі можна знайти багато корисних даних.

Думаю сильно заглиблюватися в налаштування гор.клавіш немає сенсу, тому що вони інтуїтивне зрозумілі. Наприклад, наступний «бінд»:

  { "Keys": [ "ctrl + e"], "command": "run_macro_file", "args": { "file": "Packages / Default / Delete Line.sublime-macro"}} 

Запускає макрос Delete Line при натисканні Control + E. А цей:

 {
  "Keys": [ "ctrl + shift + o"],
  "Command": "fuzzy_file_nav",
  "Args":
  {
  "Start": "/ www",
  "Regex_exclude": [ ". * \\. (DS_Store | svn | git) $"]
  }
 }

Виконує команду fuzzy_file_nav (доп. Плагін), з аргументами. Можливо вам допоможе мій конфіг гор.клавіш. Миша теж можна налаштувати - для цього існують .mousemap. На жаль, мені не вдалося знайти хоч скільки-небудь докладної документації про ці файли.

Робота з проектами

Якщо користуватися редактором замість IDE, то досить складно обійтися без проектів. Спочатку ви працюєте над проектом «default», і для того щоб створити новий потрібно вибрати в меню «Project -> Save project as». Вам запропонують вказати шлях для конфиг-файлу проекту. Після створення проекту слід прикріпити до нього робочі директорії (найчастіше вона одна, але можна вказати і кілька). Для цього виберіть «Project -> Add folder to project», після чого вона з'явиться на панелі зліва (за умови, що ви її включили). З цього моменту у вас запрацює fuzzy пошук по проекту (Ctrl + P).

Перейдемо до його налаштуванні (Project -> Edit project). У ньому ви знайдете подцепленний директорії. Щоб виключити з них зайве, додайте folder_exclude_patterns: [ "path_1", "path_2", ...] і file_exclude_patterns: [ "* .md", ...]. Зміни, як зазвичай, вступлять в силу відразу після збереження. Тепер пошук в файлах і fuzzy-пошук по іменах файлів будуть ігнорувати зайве, а древо файлів зліва кілька порідшає. У цьому ж конфиг-файлі можуть бути задані настройки для деяких плагінів. Наприклад - xdebug. Більш детальну інформацію ви можете отримати тут .

Перемикання між проектами дуже швидке, що привело мене в захват після NetBeans. За замовчуванням - Ctrl + Alt + P. Редактор запам'ятовує список відкритих файлів, активну вкладку, позицію курсора і скролла. Також можна відкрити нове вікно (НЕ вкладку, Ctrl + Shift + N) редактора і задати там інший проект.

Модулі

Жоден текстовий редактор такого рівня не може обійтися без плагінів. Встановити плагін можна просто скопіювавши його в під-директорію User. Найпростіший шлях знайти її - Preferences -> Browse packages. У вас відкриється файловий менеджер в каталозі встановлених плагінів. Як бачите їх досить багато :) Однак є більш простий і правильний шлях (для більшості ситуацій) - використання PackageControl. Про це трохи нижче.

Основна мова написання плагінів - python. Напевно, тому їх так багато. Якщо вас цікавить ця тема, можливо, вам стане в нагоді ця стаття .

PackageControl

Його установка дуже не очевидна. Спочатку переходимо на сторінку плагіна . Тиснемо зелену кнопку install і потрапляємо на сторінку з докладною інструкцією по установці. На момент написання статті вона складається з копіювання шматка python-коду в консоль редактора (Ctrl + `) і натискання на клавішу enter. Ви запитаєте - що за страшні шаманства? Не переживайте, на цьому сюрпризи закінчилися. Далі все піде як по маслу (за умови, що PackageControl нормально встановився). Я сподіваюся, розробники додадуть його в базову збірку.

Sublime Text 2 FAQSublime Text 2 FAQ

Викликати «шар» PackageControl можна з меню Preferences -> Package Control. Але простіше ctrl + shift + p, а далі набрати необхідну команду. Наприклад, для доступу до «Install Package» мені вистачило трьох символів - «ins» в fuzzy пошуку. Як же я раніше без нього жив? :) Сам модуль гранично очевидний, тому, гадаю, немає сенсу розписувати його докладно. Зазначу лише, що деякі плагіни розташовують своїми власними конфіга або гор.клавішамі. В цьому випадку швидкий доступ до цих налаштувань можна отримати, використовуючи меню Preferences -> Packages settings ->% plugin_name%.

Невелика підбірка плагінів

Aligment - дозволяє відформатувати конфіги / масиви / що-завгодно так, щоб значення розташовувалися на одному рівні по горизонталі. Не сильно зручна штука, але краще ніж нічого. Для початку слід встановити курсори перед кожним значенням, а потім натиснути «Ctrl + Alt + A» (в Linux-версії).

FileDiffs - дозволяє порівняти два файли на предмет відмінностей. Додає опції «FileDiffs Menu» і «Diffs with tab» в меню таба, а також пару пунктів в контекстне меню самого редактора. Результат відкривається в окремому Табі і, як і належить, підсвічує рядки зеленим і червоним. Якщо нічого не відкрилося - файли ідентичні, про що буде свідчити повідомлення в statusbar-е

FuzzyFileNav - Дозволяє, використовуючи нечіткий пошук, відкрити файл поза проектом, бігаючи по файлової структурі. Чи не так круто як в Ctrl + P, але, особисто мені, куди зручніше, ніж в стандартному діалоговому вікні ОС.

FileHistory - fuzzy пошук по недавно відкритим / закритим файлів. Використав до того, як знайшов GotoOpenFile.

GotoOpenFile - копія режиму Ctrl + P, але стосовно тільки до відкритих файлів.

JsMinifier - дозволяє упакувати виділений (або весь код поточного файлу) javascript. Плагін використовує Google Closure Compiler і UglifyJS. Якщо нічого не відбулося - дивіться в statusbar, швидше за все javascript-код не валиден.

PhpDoc - простий помічник для заповнення PhpDoc. Користуватися так: пишемо / ** [tab]. Уже всередині - [собака] var [tab], [собака] return [tab] і т.д. Автоматично визначати типи і імена змінних та інші корисні штуки не вміє, але зате вставляє * при перекладі каретки :)

GotoTab - дозволяє перемикати вкладки після натискання Ctrl + [цифри]. Досить зручна штука.

SublimeLinter - перевірка синтаксису на льоту (або як налаштуєте). Вміє готувати - CoffeeScript, CSS, Java, JavaScript, Objective-J, Perl, PHP, Python, Ruby. Використовує вже готові інструменти. Наприклад, для JavaScript-а пропонує вибір між JsLint, jsHint і gjslint. jsHint, який стоїть за умовчанням, не просто перевіряє синтаксис, я нав'язує вам свій true-coding-style, що частково можна налаштувати в конфіги. Мені цього не вистачило, тому що бібліотека виявилася не настільки гнучкою, як би хотілося, тому довелося застосовувати хірургічні методи :) Також варто відзначити, що SublimeLinter здатний змусити ваш редактор - подвисать. В такому випадку - покопатися в настройках, він досить гнучко настроюється.

Tag - бібліотека, що надає зручні засоби для роботи з XML. Використовую для приведення XML до читаемому увазі. Звичайно, на цьому його можливості не обмежуються. Наприклад, набравши «div» і натиснувши ctrl + shift + "," я отримую <div> </ div> з курсором всередині.

XDebug - відладчик xdebug. Не дуже зручний. Налагодження в NetBeans куди зручніше. Однак для простих завдань - може стати в нагоді. Користувачам * buntu обов'язково слід прочитати розділ «Troubleshooting» на сторінці плагіна.

LastEdit - глючний аналог ctrl + q в Netbeans. Переміщує курсор в місця недавніх змін. Дуже зручна штука, але, на жаль, часто не спрацьовує. Якщо вас цікавить ця функція, можливо, вам варто спробувати і цей плагін .

Більш повний список доступний тут . Але далеко не всі плагіни, які мені траплялися - в ньому є.

Підсвічування синтаксису з коробки досить обширна. Однак для nginx і apache2 конфігов, SCSS і Jade мені треба було встановити плагіни. Якщо для використовуваного вами мови такого плагіна не знайшлося, спробуйте перенести підсвічування з TextMate, благо дуже багато речей з нього підтримуються як нативні.

Snippets

Snippet-и - це заздалегідь заготовлені шматки коду, з розставленими в них якорями. Тобто замість того, щоб писати <xsl: when test = "some"> some code </ xsl: when> можна написати snippet. Наведу простий приклад:

	 <Snippet>
	  <Content> <! [CDATA [for (var $ {1: name} in $ {2: source}) if ($ {2: source} .hasOwnProperty ($ {1: name}))
	 {
	  var $ {3: iterator} = $ {2: source} [$ {1: name}];
	  $ {0: // code}
	 }]]> </ Content>
	  <TabTrigger> forin </ tabTrigger>
	  <Scope> source.js </ scope>
	  <Description> for (var name in source </ description>
	 </ Snippet>	

tabTrigger - рядок, яку потрібно набрати і натиснути tab (повністю набирати не обов'язково, тому що Snippet-и потрапляють в autocomplete). Після активації курсор переміщається до $ 1 і виділяє «name», наступне натискання tab виділить source, який буде змінюватися відразу в 3 місцях. По закінченню роботи snippet-а ви потрапите в $ 0. Щоб припинити його роботу достроково - потрібно натиснути Esc. На відміну від Netbeans, я зміг поставити всі потрібні мені Snippet-и без проблем з «упригіваніем» курсору в початок файлу, мішанини з відступів і іншого незрозумілої поведінки (якщо читач хоче назвати мене «криворуким», можу навести приклад такої поведінки :) ). Scope - визначає тип файлів, в яких snippet буде задіяний, а description ви побачите в autocomplete.

Більш детальну інформацію можна знайти тут . Можливо, вам допоможе добірка сніпетів .

макроси

Макроси і в Африці - макроси. Почати запис можна через Tools -> Record macro, зупинити - там же. По закінченню його слід зберегти (Tools -> Save macro) в Packages / User директорію. Відкривши підсумковий файл, ви побачите json-масив зі списком вироблених дій. Задати макросу гарячу клавішу можна використовуючи наступний синтаксис: { "keys": [ "alt + 1"], "command": "run_macro_file", "args": { "file": "Packages / User /% your_macros% .sublime- macro "}}.

Layouts

Про те, що в ST2 є шари, я дізнався зовсім недавно, побачивши screenshot на lor-е . Шари дозволяють поділити вікно редактора на декілька частин (2, 3, сіткою і т.д.). Це дуже зручно, коли щось пишеш в один файл, спираючись на вміст другого. Але з моїм 19 "« квадратним »монітором ця можливість виглядає не дуже привабливою. На жаль, не можна відкрити в різних шарах різні проекти. Також варто відзначити, що панель відкритих файлів (яка зліва), після включення режиму кількох шарів, ділиться на кілька груп .

висновок

Sublime Text 2 - відмінний вибір для програміста або адміністратора. Для рядового користувача, на мій погляд, більше підійшов би редактор без json-конфігов і з більш очевидним GUI.

Важливо розуміти ST2 - текстовий редактор, а не IDE, хоча, використовуючи сторонні плагіни, його можна кілька наблизити до цього статусу. Правда, мені так і не вдалося завести розумний autocomplete .

Было много критики в сторону NetBeans, но я бы хотел отметить, что эта IDE мне нравится, и я до сих пор ей пользуюсь, хотя и крайне редко (к примеру, для отладки nodeJS или PHP-xDebug). Мне очень не хватает в ST2 столь же удобного средства для «патчинга» файлов, просмотра предыдущих версий, документации и разного рода вкусных штук, присущих IDE, вроде перехода к определению функции при нажатии ctrl + left_click, даже если файл находится чёрт знает где. Однако ST2 дал мне куда большую лёгкость и удобство при решении рядовых задач.