Expertus metuit
Использование Sublime Text 3
Опубликовано 2013-07-04 в 11:54

Когда-то я писал о личном опыте использования Sublime Text 2, а после выхода Sublime Text 3 решил начать новую статью, ориентированную именно на версию 3 с небольшим акцентом на миграцию с 2 на 3.

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

Расширения

В самом начале нужно поставить «главное расширение» Package Control, потом через него можно ставить другие, включать/отключать и так далее. Процесс установки описан здесь.

Ниже список расширений, которые не входят в начальную поставку, но весьма полезны (они все ставятся через Package Control).

SyncedSideBar
Синхронизует текущий открытый файл с деревом файлов в панели слева.
Sublime Linter
Проверка синтаксиса в реальном времени, подсвечивает места в коде, содержашие (потенциальные) ошибки и прочие «плохие» места. Использует внешние программы для собственно проверки, например, для XML использует xmllint, для Java — javac -Xlint.
CommentsAwareEnter
«Умный» Enter внутри комментария, позволяет писать, например, многострочные комментарии автоматически, просто нажимая на Enter. Работает с комментариями типа //, но не с /* */.
DocBlockr
Упрощает работу с комментариями, автоматически расширяет /** */-блоки, например.
All Autocomplete
Включает поиск для автодополнения по всем открытым в редакторе файлам, а не только в текущем. Я для себя этот проект форкнул и немного подредактировал, чтобы исправить несколько надоедливых багов (https://github.com/sigsergv/SublimeAllAutocomplete).

А вот эти расширения я пробовал, но отказался от них из-за большого количества багов.

Sublime CodeIntel
Более удобная работа с кодом: переход по символам (Alt+Click), подсказки с аргументами функций, более качественное автодополнение. Заявлена поддержка вот этого зоопарка: PHP, Python, RHTML, JavaScript, Smarty, Mason, Node.js, XBL, Tcl, HTML, HTML5, TemplateToolkit, XUL, Django, Perl, Ruby, Python3

Клавиатура и хоткеи

В Sublime Text очень активно используется клавиатура, очень много хоткеев на все случаи, но они часто отличаются от хоткеев из других редакторов. Посмотреть текущие можно через меню Preferences → Key Bindings — Default, откроется таб конфигом текущих системных хоткеев. Можно эти хоткеи менять на свои, но лучше это делать через пользовательский конфиг хоткеев, он открывается из меню Preferences → Key Bindings — User. Дальше в официальной документации читайте.

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

:::javascript
// eclipse-like key bindings, for sublime text v.3 (macos)
// author: Sergey Stolyarov <[email protected]>
[
    // disable some hotkeys
    { "keys": ["ctrl+f3"], "command": "unbound" },
    { "keys": ["ctrl+shift+f3"], "command": "unbound" },
    { "keys": ["ctrl+g"], "command": "unbound" },
    { "keys": ["ctrl+q"], "command": "unbound" },

    // find selected text
    { "keys": ["super+k"], "command": "find_under" },
    { "keys": ["super+shift+k"], "command": "find_under_prev" },

    // delete word before cursor
    { "keys": ["super+w"], "command": "delete_word", "args": { "forward": false } },

    // delete line (default ctrl+shift+k)
    { "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Line.sublime-macro"} },

    // auto completion
    { "keys": ["super+p"], "command": "auto_complete" },

    // open files list overlay
    { "keys": ["ctrl+3"], "command": "show_overlay", "args": {"overlay": "goto", "show_files": true} },

    // add line
    { "keys": ["shift+enter"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Add Line.sublime-macro"} },

    { "keys": ["ctrl+shift+p"], "command": "move_to", "args": {"to": "brackets"} },
    { "keys": ["super+shift+p"], "command": "move_to", "args": {"to": "brackets"} },

    // jump to line
    { "keys": ["super+l"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} },
    { "keys": ["ctrl+l"], "command": "show_overlay", "args": {"overlay": "goto", "text": ":"} },

    // use Ctrl+H for searching in files
    { "keys": ["ctrl+h"], "command": "show_panel", "args": {"panel": "find_in_files"} },
    { "keys": ["super+h"], "command": "show_panel", "args": {"panel": "find_in_files"} },
    { "keys": ["ctrl+shift+f"], "command": "unbound" },
    { "keys": ["super+shift+f"], "command": "unbound" },

    // use Ctrl+F both for searching and replacing
    { "keys": ["ctrl+f"], "command": "show_panel", "args": {"panel": "replace"} },
    { "keys": ["super+f"], "command": "show_panel", "args": {"panel": "replace"} },

    // expand selection to complete line
    { "keys": ["super+shift+l"], "command": "expand_selection", "args": {"to": "line"} },
    { "keys": ["ctrl+shift+l"], "command": "expand_selection", "args": {"to": "line"} },

    // case conversions
    { "keys": ["alt+up"], "command": "upper_case" },
    { "keys": ["alt+down"], "command": "lower_case" },

    // close all opened tabs
    {"keys": ["shift+ctrl+w"], "command": "close_all"},

    // open methods lookup
    { "keys": ["ctrl+r"], "command": "show_overlay", "args": {"overlay": "goto", "text": "@"} },

    { "keys": ["f3"], "command": "find_next" }
]

Настройка

Preferences.sublime-settings

Главные настройки хранятся в файле ~/.config/sublime-text-3/Packages/User/Preferences.sublime-settings, там внутри обычный текст в JSON-подобном формате. Настройки из него перекрывают файл с настройками по умолчанию. Ниже конфиг с моими настройками:

:::javascript
{
    "color_scheme": "Packages/Color Scheme - Default/Mac Classic.tmTheme",

    // включаем подсветку строки с курсором
    "highlight_line": true,

    // ставим любимый шрифт
    "font_face": "Liberation Mono",
    // и размер шрифта
    "font_size": 10,

    // отключить автоматическое появление меню autocomplete
    "auto_complete": false,

    // меняем символы-сепараторы слов
    "word_separators": "./\\()\"'-:,.;<>~!@#%^&*|+=[]{}`~?",

    // использовать отступы пробелами по умолчанию
    "translate_tabs_to_spaces": true,

    // файлы для игнора в разных списках
    "file_exclude_patterns": [
        "build/*",
        "*.pyc"
    ],

    // включаем перенос по словам
    "word_wrap": true,

    // скрываем кнопки закрывания табов, пользуемся нажатием на колесо для этого
    "show_tab_close_buttons": false,

    // делаем табы с несохранёнными изменениями более заметными
    "highlight_modified_tabs": true,

    // отключаем переключение табов колесом мыши
    "mouse_wheel_switches_tabs": false,

    // отключаем плавную прокрутку
    "scroll_speed": 0,

    // всегда показывать текующую позицию в минимапе
    "always_show_minimap_viewport": true,

    // включаем автоматическую синхронизацию для плагина SyncedSideBar
    "reveal-on-activate": true,

    // отключаем «схлапывание» табов
    "enable_tab_scrolling": false,

    // включаем показ кодировки в статусбаре
    "show_encoding": true,

    // при поиске подставлять выделенный текст в поле поиска
    "find_selected_text": true,

    // позволяет прокручивать текст за пределы конца файла
    "scroll_past_end": true,


    "ignored_packages":
    [
    "Vintage"
    ]
}

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

В sublimetext хорошо организована работа с проектами, между ними легко переключаться с сохранением открытых файлов. У каждого проекта есть свои собственные настройки, они хранятся в файле, который можно открыть из меню Project → Edit project, это точно такой же json, как и файл с настройками программы или хоткеев. Главный элемент этого конфига — объект folders, в нём для каждой папки проекта создаётся отдельный объект, элемент path задаёт путь к папке.

Помимо path там могут находиться и другие элементы, например, name (строкового типа) задаёт отображаемое имя каталога в дереве проекта. Другие полезные элементы — списки file_exclude_patterns и folder_exclude_patterns. Вот простейший пример проектного конфига:

:::javascript
{
    "folders":
    [
        {
            "path": "/home/user/projects/pyrone",
            "file_exclude_patterns": ["*.in", "*.pyc"],
            "folder_exclude_patterns": ["pyrone.egg-info", "storage", "data"]
        }
    ]
}

Недостатки

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

Комментарии

Sergey Stolyarov | 2015-04-06 в 00:37

Попробуйте вместо Cyrillic (Windows-1251) написать Cyrillic (Windows 1251) (без минуса).

Гость: Юрий | 2015-04-05 в 21:18

Спасибо, ваша заметка по настройке редактора мне пригодилась. В связи с настройкой появился вопрос, возможно вы его уже решили, поэтому позволю себе спросить: Как установить default encoding для открываемого файла в проекте. У меня много файлов в кодировке windows 1251. Sublime определяет в статусной строке кодировку windows-1252 приходится каждый файл файл в проекте каждый раз при возникновении необходимости редактировать делать reopen with encoding windows 1251. Попытался безуспешно добавить в user settings после "scroll_past_end": true, "default_encoding": "Cyrillic (Windows-1251)", "fallback_encoding": "Cyrillic (cp866)" подскажете? спасибо за статью

Текст комментария (допустимая разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com>) Посетители-анонимы, обратите внимение, что более чем одна гиперссылка в тексте (включая оную из поля «веб-сайт») приведёт к блокировке комментария для модерации. Зайдите на сайта с использованием аккаунта на twitter, например, чтобы посылать комментарии без этого ограничения.
Имя (обязательно, 50 символов или меньше)
Опциональный email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2024 Sergey Stolyarov | Работает на pyrengine