Выбор редактора (среды для разработки), наверное, главное событие в жизни каждого разработчика. Я тоже поначалу не мог долго определиться какой редактор использовать, но потом, лет 8-9 назад установил Sublime Text и все - вопрос с редактором был закрыт раз и навсегда. Да, за эти года я иногда пробовал научиться работать в vim, но не смог, ну а на новомодные Atom, PyCharm или VS Code я вообще не смотрел. Поэтому я хотел бы рассказать про то, как я использую Sublime Text 3 и почему мне не нужен IDE в 2018 году.
Главная причина, почему мне не нужен IDE - это, конечно, база расширений для Саблайма, которая находится на packagecontrol.io и покрывает любой из языков, на которых я программирую. Так как блог о Python, то я расскажу только о расширениях для Python, но у меня также есть установленные плагины для JavaScript, flow, TypeScript, Elm и Rust.
В Python же все начинается с установки MagicPython от Юрия Селиванова, расширения, которое добавляет поддержку подсветки всех всех новомодных фич Python, и хоть авторы Sublime Text пытаются улучшать поддержку базового Python от релиза к релизу, нам это не нужно после установки и настройки MagicPython.
Дальше. Было бы неплохо иметь автодополнение для Python, да? Поэтому следующим делом, устанавливаем SublimeJEDI от Сережи Русских. Благодаря движку JEDI, который используется в IPython, к примеру, на выходе мы получаем автодополнение нашей мечты. Но для этого в настройках проекта нам нужно сделать две вещи,
- Задать путь к
python_interpreter
, в общем случае это"~/Projects/<project>/.venv/bin/python"
, чтоб JEDI использовал все зависимости, установленные в проекте - Настроить
python_package_paths
. Опять же в общем случае это["~/Projects/<project>"]
Все, теперь мы получили автодополнение к любому import
стейтменту и много других фич, опять же благодаря движку JEDI.
Идем дальше. Линтинг. Тут нам нужны SublimeLinter-flake8 и SublimeLinter-contrib-mypy (а куда без type annotations в 2018 то году?). По дефолту, они будут пытаться использовать стандартный Python, установленный в системе, но так как в моем случае набор flake8 плагинов от проекта к проекту отличается, я задаю executable
для этих линтеров в файле настройки проекта (<project>.sublime-project
) как,
"SublimeLinter.linters.flake8.executable": "~/Projects/<project>/.venv/bin/flake8"
для настройки SublimeLinter-flake8"SublimeLinter.linters.mypy.executable": "~/Projects/<project>/.venv/bin/mypy"
для настройки SublimeLinter-contrib-mypy
Отдельно вы возможно захотите настроить сам SublimeLinter, но так или иначе про ошибки линтера мы узнаем куда быстрее и прямо в редакторе.
По большому счету с главными расширениями, которые превращают Sublime Text 3 в удобную среду разработки на Python мы закончили, но мне также хотелось бы упомянуть еще некоторые плагины, которые могут точно пригодиться,
- sublack - автоформатирование Python файлов при помощи black. Нужная вещь, когда вы работаете в команде и не хотите на код ревью тратить время о спорах насчет форматирования Python кода.
- editorconfig-sublimetext - также в 2018 году не зачем спорить о табах vs пробелах или отступах. Единократно кладем
.editorconfig
в корень проекта, а дальше Sublime Text 3 автоматически применяет необходимые настройки форматирования для любых файлов. - DocBlockr - упрощает работу с комментариями в коде. Конечно, этот плагин больше применим для JavaScript кода, но и для Python иногда бывает полезен.
- GitGutter - просмотр того, как изменился блок кода, прямо в Sublime Text. Очень нужная вещь, для разработчиков, которые не любят бессмысленный закомментированный старый код.
- Terminus - и хоть я постоянно держу открытым
Terminal.app
иногда бывает удобно открыть терминал прямо в соседней вкладке Sublime Text.
Ну и напоследок чуть о внешнем виде. Все это время я использую схему подсветки кода Tomorrow-Night, так что очень был рад, когда настроил Boxy Theme для внешнего вида Sublime Text, используя это же цветовое решение. В итоге, мой Sublime Text выглядит следующим образом,
А вот шаблон настроек, который я использую для своих проектов,
{
"folders":
[
{
"file_exclude_patterns": [
".install*",
"*.lock",
"*-lock.json"
],
"folder_exclude_patterns": [
".*cache",
"node_modules"
],
"path": "/Users/playpauseandstop/Projects/<project>"
}
],
"settings": {
"python_interpreter": "/Users/playpauseandstop/Projects/<project>/.venv/bin/python",
"python_package_paths": [
"/Users/playpauseandstop/Projects/<project>"
],
"SublimeLinter.linters.flake8.executable": "/Users/playpauseandstop/Projects/<project>/.venv/bin/flake8",
"SublimeLinter.linters.mypy.executable": "/Users/playpauseandstop/Projects/<project>/.venv/bin/mypy"
}
}
Вот и получается, что Sublime Text 3 с таким набором расширений - это прекрасный редактор для программирования на Python.