sublime text

Немного о редакторе.

Sublime Text очень мощный текстовый редактор с богатым набором расширений. Редактор является условно бесплатным, но ограничений без покупки лицензии нет.

Я уже перешел на 3-ю версию редактора, сразу после того как он стал публичной бетой, поэтому в этой статье я буду рассматривать именно Sublime Text 3. Из киллер-фич, доступных в 3 версии можно назвать Go To Definition, который позволяет с легкостью бегать по определениям функций и переменных в рамках текущего проекта, и скорость работы редактора. Теперь плагины изолированны от основного приложения. Кстати, диалоговое окно с просьбой купить лицензию в редакторе без лицензии теперь выходит очень редко.

Предисловие.

Я долгое время кочевал между редакторами Vim и Emacs. В Vim мне нравился гибкий редактор, возможность практические все что угодно делать с текстом без использования мыши. Так случилось что у меня возникла некая неприязнь при использовании IDE. Пока что я знаю две самые лучшие IDE для питона: PyCharm, которая является коммерческой и PyDev в виде плагина на Eclipse. Эти обе IDE написаны на Java и не могут похвастаться скоростью работы. Наконец я нашел Sublime, немного его настроив и расширив плагинами, о которых мы поговорим в этой статье. Я начну с описания самых простых расширений и закончу настройкой редактора для работы с Python и Django.

Package Control

Package Control это неофициальное расширение, которое позволит вам легко устанавливать и обновлять ваши плагины. На данном сайте я уже описывал процесс его установки и настройки, поэтому что бы не загромождать данную статью я просто поделюсь ссылками:

Официальный сайт и инструкция по установки
Тут полное описание редактора и данного расширения, процесс его установки

Rsub/Rmate

Утилита rmate пришла в Sublime из редактора TextMate. Бывает так, что мне приходится часто бегать по клиентским ssh и править файлы конфигураций. Команда rmate запускается на удаленном ssh сервере, и в качестве параметра ей передается редактируемый файл. Данный файл сразу открывается в вашем редакторе и вы можете его редактировать как локальный, при этом все изменения сохраняются на сервере. Подробно прочитать об установки rmate вы можете тут

Emmet

Emmet это способ для ускоренного написания CSS и HTML кода. Ранее плагин назывался Zen Coding, но потом проект был переименован в emmet. Я думаю что установка данного расширения через Package Control не должна вызывать сложностей, поэтому описывать ее тут не буду.

Bracket Highligheter

Bracket Highligheter позволяет красиво подсвечивать парные скобки. Плагин работает из коробки и результат его работы выглядит так:

SublimePythonIDE

Я кратко описал основные расширения, которые упрощают редактирование текста. Давайте перейдем к расширениям, которые сделают из редактора почти полноценную IDE.

SublimePythonIDE ранее назывался SublimeRope (для Sublime Text 2). Без данного расширения вы можете бегать по объявлениям функций, методов и переменных только в рамках текущего проекта, но после установки SublimePythonIDE вы можете переходить по объявлениям всех модулей, указанных в переменной окружения PYTHONPATH. Достаточно только выбрать метод (переменную, функцию) правым кликом мыши и выбрать пункт меню Go To Definition:

Каждый раз выбирать пункт из контекстного меню неудобно, поэтому присвоим команде Go To Definition определенную комбинацию клавиатуры. Откройте Preferences -> Key Bindings User и добавьте туда следующие строки:

[
    { "keys": ["super+l"], "command": "python_goto_definition" },
]

Теперь во время нажатия cmd-l (в Linux ctrl+l, когда курсор стоит над переменной или функцией откроется ее объявление.

В стандартную поставку SublimePythonIDE входит PyLint, который может подсвечивать ошибки и предупреждения PEP8.

Настраиваем Build System для тестирования Django кода

Мне неудобно каждый раз идти в консоль и запускать команду python manage.py test, что бы запускать автоматические тесты, поэтому давайте создадим новый Build System. Перейдите в меню Tools -> Build System -> New Build System. Редактор создаст новый файл. Добавьте в него следующие строки:

{
    "cmd": ["python", "manage.py", "test", "--noinput"],
    "working_dir": "[mathjax:inline {project_path:]{folder}}",
    "selector": "source.python",
    "env": {"PYTHONPATH":"/Users/aliev/env/lib/python2.7/site-packages"},
}

В строке env я указал стандартную переменную окружения питона - PYTHONPATH и путь к пакетам virtualenv проекта, с которым я работаю (вы можете указать свой путь либо вообще удалить строку env). Сохранить файл и дайте ему название (например Django-test). В меню Tools->Build System выберите Django-test. Теперь после нажатия комбинации cmd->b (в Linux ctrl+b) у вас будут запускаться тесты для текущего Django проекта:

Плагин SublimeREPL и Django консоль

SublimeREPL это отличный плагин, который позволяет запускать REPL консоль практически любого языка программирования (Python не исключение). Мне захотелось что бы в редакторе запускалась консоль Django (которая запускается командой python manage.py shell). К счастью, SublimeREPL настраиваемый плагин. Если вы хотите быстро запускать консоль Django прямо в Sublime Text 3 установите SublimeREPL и добавьте следующие строки куда нибудь в середину файла:

Sublime Text 3/Packages/SublimeREPL/config/Python/Main.sublime-menu

{"command": "repl_open",
"caption": "Django",
"id": "repl_python_run",
"mnemonic": "d",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["python", "-u", "manage.py", "shell"],
"cwd": "[mathjax:inline {project_path:]{folder}}",
"syntax": "Packages/Python/Python.tmLanguage",
"external_id": "python"
}
},

Теперь мы можем в текущем Django проекте открыть консоль перейдя в пункт меню: Tools->SublimeREPL->Python->Django. В редакторе должна открыться Django консоль:

В редакторе TextMate есть такая заммечательная утилита - rmate. Она ставится на сервер с ssh доступом, через которую можно напрямую редактировать удаленные файлы по ssh прямо в TextMate. Для Sublime Text 2 так же реализован плагин, который позволяет интегрировать Sublime с утилитой rmate.

Сейчас я расскажу как установить плагин для редактирования файлов по ssh в редакторе Sublime Text 2.

Установка

Для начала нам нужно создать ssh туннель и подключиться к удаленной машине по ssh:

ssh -R 52698:localhost:52698 yourmachine.com

Далее нужно скачать утилиту rmate и разместить ее куда нибудь в /usr/local/bin/ или /usr/bin/ (не важно) на удаленной машине:
wget --no-check-certificate https://raw.github.com/aurora/rmate/master/rmate
mv ./rmate /usr/bin/

Теперь откройте Sublime Text 2 и через пакетный менеджер установите плагин rsub. Для установки нажмите комбинацию Ctrl+Shift+P и введите название расширения: rsub. После чего перезапустите редактор.

Это все. Теперь на удаленном сервере попробуйте откредактировать любой файл командой rmate. Например введите rmate /etc/hosts. В вашем редакторе Sublime Text 2 сразу же откроется этот файл, вы можете вносить любые изменения, которые будут сохраняться на удаленной машине.

Но есть одна проблема, что бы редактировать файл необходимо каждый раз открывать ssh туннель длинной командой ssh -R 52698:localhost:52698 yourmachine.com. Что бы каждый раз не вводить эту команду добавьте следующие строки в ваш файл ~/.ssh/config:

Host hostname
    Hostname yourmachine.com
    RemoteForward 52698 localhost:52698

Вот и все, теперь каждый раз подключаясь по ssh к хосту yourmachine.com автоматически будет открываться ssh туннель.

Для быстрой верстки очень удобно использовать LiveReload, который автоматически перезагружает редактируемый HTML файл в веб броузере после его сохранения. LiveReload поддерживает компиляцию на лету нескольких форматов, а именно LESS, SASS, Compass, Stylus, CoffeeScript, IcedCoffeeScript, Eco, SLIM, HAML, Jade. Сам LiveRealod поставляется в виде нескольких реализаций: расширение для броузера(требуется в любом случае), приложение для мака (что для нах не очень подходит так как оно платное), расширение для текстового редактора и консольная версия.

Вступление

Практически все свое время над кодом провожу в редакторе vim (MacVim), на гитхабе есть даже репозиторий с моим конфигурационным файлом. Кому интересно, можете посмотреть, форкнуть: https://github.com/aliev/.vim
Но попробовать чего то новенького тоже очень хочется. И вот я решил попробовать Sublime Text 2. Сразу хотелось бы развеять все мифы по поводу его платности. Редактор совершенно бесплатный! В версии без лицензии нет ограничений на функциональность, единственное что вам будет мешать - редко всплывающее окно, которое убирается клавишей Esc после сохранения файла с просьбой купить лицензию редактора. Кстати, купленная лицензия действует на неограниченное количество компьютеров и операционных систем (Mac, Win, Lin).

RSS-материал