Редактор atom


Atom. Еще один редактор для программистов

Долгое время для программирования в качестве основного редактора и среды разработки я использовал Vim, точнее, gVim. Не скажу, что мне в нем нравилось все, но по сравнению с другими перепробованными мной инструментами Vim, обвешенный плагинами, в работе очень удобен. Главный недостаток Vim — это его принципиальная однопоточность (кстати, исправления этого недостатка ждут от проекта NeoVim, участники которого занялись переписыванием исходного кода Vim). Из-за этого, если включить для языка Python анализ исходных кодов (в том числе установленные библиотеки), то при попытке написать, например, «wx.» плагин уходит в долгий анализ библиотеки wxPython, а пользователь вынужден ждать завершения этого процесса, который может занимать секунд 30. Это все из-за того, что Vim не может проанализировать исходники в фоновом режиме. Этого недостатка нет в Emacs, но я к нему так и не привык, а еще в Emacs мне не понравилось, как устанавливаются плагины, особенно когда столкнулся с проблемой несовместимостей разных версий.

Некоторое время назад я пробовал SublimeText, этот редактор мне показался интересным, но все-таки через две недели его использования я опять вернулся к Vim, даже не помню по какой причине. Правда, после этого в Vim я себе установил тему для раскраски исходников как в SublimeText, а теперь аналогичную тему поставил и для Atom.

И вот месяц назад я себе установил Atom. И знаете, он у меня стал использоваться на равных с Vim, т.е. для больших проектов я стал использовать Atom, а для исправления отдельных файлов — по-прежнему Vim.

В этом посте я расскажу про свой опыт использования редактора Atom и буду сравнивать его с Vim. Может быть правильнее надо было бы его сравнивать с SublimeText, на который он очень похож, и к которому он ближе по сути, но SublimeText я использовал слишком давно.

Начнем с того, что Atom — это текстовый редактор с открытым кодом, созданный компанией GitHub, и развиваемый, в том числе, сообществом open source. Atom — это редактор для программистов, поддерживающий множество языков программирования, включая C/C+, Python, Go, Haskell и, разумеется, JavaScript, который играет в этом редакторе ключевую роль из-за того, что плагины для Atom (плагины к Atom называются пакетами — Packages) пишутся именно на JavaScript (точнее, на JavaScript с использованием платформы Node.js).

Сам редактор сделан на движке Chromium, из-за чего редактор нельзя назвать легковесным и очень быстрым. Правда, особых тормозов при работе с ним я не замечал, хотя запускается он заметно медленнее Vim, но все-равно намного быстрее, чем, например, Eclipse. Размер дистрибутива под Ubuntu Linux составляет 68 МБ (сравнительно недавно вышел Atom 1.3.2, и именно про эту версию я буду говорить в этом посте).

Что делает программист, когда ему в руки попадает новый редактор? Правильно, лезет в настройки и пытается настроить редактор под свои вкусы (наиболее продвинутые программеры сразу начинают писать плагины, а совсем просветленные — делать свой форк).

Большое количество настроек — это хорошо, но обычно для программерского редактора хочется чего-то большего, а именно плагинов. Вот уж чего-чего, а на недостаток плагинов к Atom жаловаться не приходится. Всего за 2 года с момента появления редактора (первая версия вышла в феврале 2014 года) было вовлечено огромное количество людей, которые написали все эти пакеты. Atom весь состоит из пакетов, даже в только что установленном дистрибутиве их будет более 70. Это удобно не только тем, что «из коробки» вы получаете поддержку большого количества языков программирования и различных удобных примочек, но также тем, что неиспользуемые пакеты можно отключить, тем самым ускорив запуск редактора (про скорость мы поговорим чуть позже).

Для примера перечислю некоторые пакеты, которые входят в дистрибутив:

Под поддержкой языков понимается не только раскраска синтаксиса, но еще и настройки отступов, переноса длинных строк, отображение «невидимых» символов вроде табуляции и все такое прочее. Все это можно настраивать отдельно для каждого языка.

Например, для Python, где важны отступы, я себе включил отображение табуляции:

Хотя перфекционистам внешний вид такого отображения может не понравиться:

Что меня особенно впечатлило в Atom, так это легкость установки пакетов. Достаточно в настройках зайти в раздел «+Install», а там есть поле для поиска пакетов по ключевым словам. Если будет найден нужный пакет, то для его установки достаточно нажать кнопку «Install», и как правило, это не требует перезапуска редактора.

А еще Atom ненавязчиво следит за выходом новых версий пакетов. Обновляются пакеты тоже нажатием одной кнопки.

Кроме графического интерфейса Atom устанавливает программу apm (Atom Package Manager), которая позволяет из командной строки устанавливать, обновлять, удалять пакеты, а также публиковать свои пакеты и еще много всего с этим связанное. Например, чтобы установить пакет, нужно всего лишь выполнить команду:

apm install имя_пакета

Хоть Atom — это редактор для программистов, но он не заставляет для своей настройки постоянно править текстовые файлы конфигов, как это делает Vim и Emacs, в основном все делается через GUI. В файлы настроек мне приходилось лезть в двух случаях — для установки горячих клавиш (надеюсь, что в будущих версиях и этого делать не придется) и для добавления сниппетов кода.

Для хранения настроек Atom использует форматы JSON и CSON (CoffeeScript-Object-Notation), формат, напоминающий JSON, но использующий отступы вместо фигурных скобок. Вот, например, как выглядит файл со сниппетами в этой нотации:

'.source.python': 'Coding': 'prefix': 'cod' 'body': '# -*- coding: UTF-8 -*-' 'Docstring': 'prefix': 'ds' 'body': '"""$1"""' 'is None': 'prefix': 'isn' 'body': 'is None'

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

Миникарта — область справа, показывающая исходный текст в очень уменьшенном масштабе. Эту возможность я впервые увидел в SublimeText.

Возможность быстро переключаться между проектами. Atom может открывать любую папку как проект, но с помощью пакета «project-viewer» можно добавить панель со списком сохраненных проектов, чтобы не искать каждый раз нужную папку.

При этом для каждого проекта могут сохраняться открытые вкладки с файлами (почему-то эта полезная возможность по умолчанию отключена в настройках).

Автодополнение. Без этого уже не обойтись любому серьезному программерскому редактору. Автодополнение в Atom мне понравилось больше, чем то, чего мне удалось добиться в Vim.

Показ новых / удаленных / исправленных строк.

Такая возможность работает только с исходниками, находящимися в репозитории git, но может быть есть подобный пакет и для других систем контроля версий — я не искал.

Также есть несколько пакетов, которые интегрируют в редактор работу с git / svn / hg и т.д., хотя я предпочитаю работать с git в консоли, но для быстрого просмотра того, какие файлы изменились в процессе работы, себе я установил пакет git-status, который выводит сообщение одноименной команды в нижнюю панель редактора.

Для Python (и наверняка для других языков программирования) есть множество пакетов для статического анализа кода (включая проверку выполнения рекомендаций PEP8 и PEP257). Среди всех подобных пакетов я остановился на пакете для проверки кода с помощью pylama.

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

Есть пакет symbols-tree-view для показа структуры исходников (списка классов и их методов) и быстрого перехода к нужному классу или методу.

Многие жалуются на скорость работы Atom, но то ли у меня проекты не настолько большие, то ли в новых версиях Atom стал заметно быстрее. Разработчики редактора явно заботятся о скорости. Редактор измеряет время, которое тратится на загрузку каждого пакета, и показывает эту информацию пользователю. Среди стандартных пакетов есть пакет «Timecop», который показывает, сколько времени тратится на загрузку каждого пакета:

Также для конкретного пакета можно посмотреть, сколько времени он загружается.

В итоге под себя на 80% я Atom настроил за один день, остальные 20% донастраивал по мере того, как появлялась надобность в какой-то возможности. Для сравнения, с emacs я игрался неделю, и за это время настроил только 20% того, чего хотелось бы видеть в редакторе.

Теперь поговорим о глюках. С первой проблемой я столкнулся на этапе установки. Хотя Atom поставляется в виде deb-пакета под Ubuntu, но этот пакет отказывался устанавливаться. Оказалось, что для успешной установки Atom, из системы нужно удалить пакет apmd. К счастью, это решение достаточно быстро нашлось в Гугле, поскольку проблема известная. И вроде бы этот пакет в системе не очень нужен — он не потянул за собой удаление каких-нибудь других пакетов. В принципе, apmd — это демон для управления питанием (APM расшифровывается как Advanced Power Management), но в современных компьютерах вместо него используется ACPI (Advanced Configuration and Power Interface). Так что ничего страшного от его удаления случиться не должно.

Atom странно себя ведет в случае, если открытый в нем файл был изменен другой программой. При этом Atom молча загружает себе уже измененный файл, но перед выходом из программы предлагает его сохранить, даже если файл больше не изменялся. Такое поведение наблюдал несколько раз, но на 100% оно не повторяется.

Если коротко подводить итоги по тем возможностям, что я использую, то Atom однозначно выигрывает у Vim по автодополнению, но для Atom я не нашел инструментов для рефакторинга кода на Python (для Vim есть плагин ropevim, который использует для рефакторинга библиотеку rope). Автоматическое выравнивание кода в Vim мне показалось более аккуратным, хотя для Atom есть пакеты для форматирования кода, чтобы он соответствовал рекомендациям PEP8.

Пока в Atom не очень удобно устанавливать горячие клавиши — приходится лезть в конфиг, но по сравнению с Vim это недостатком не является.

У Vim остается преимущество по богатым возможностям редактирования и выделения, особенно в Atom не хватает возможности задавать количество повторений для операций, например, удалить 10 строчек или перевести 5 символов из нижнего регистра в верхний и т.п. Не хватает возможностей инкремента следующего за курсором числа, то что в vim делается с помощью горячей клавиши Ctrl+A. Для Atom есть плагины vim-mode и ex-mode, но я не люблю один инструмент превращать в другой, хотя из любопытства эти плагины в будущем собираюсь попробовать.

В результате мне редактор Atom очень понравился, в последнее время я его начал использовать в качестве основного редактора для программирования, а vim продолжаю использовать, если нужно подправить отдельные файлы, не открывая весь проект.

Ссылка на домашнюю страницу Atom: https://atom.io

jenyay.net

Настройка Atom (full version)

# This file is used by Flex Tool Bar to create buttons on your Tool Bar.

# For more information how to use this package and create your own buttons,

#   read the documentation on https://atom.io/packages/flex-tool-bar

 

[

    {

        type: "button"

        icon: 'file-tree'

        iconset: 'mdi'

        callback: "tree-view:toggle"

        tooltip: "Toggle Sidebar"

    }

    {

        type: "button"

        icon: 'file-outline'

        iconset: 'mdi'

        callback: "application:new-file"

        tooltip: "New File"

    }

    {

        type: "button"

        icon: 'file'

        iconset: 'mdi'

        callback: "advanced-open-file:toggle"

        tooltip: "Open File"

    }

    {

        type: "button"

        icon: 'content-save'

        iconset: 'mdi'

        callback: "core:save"

        tooltip: "Save File"

    }

    {

        type: "button"

        icon: 'content-save-all'

        iconset: 'mdi'

        callback: "window:save-all"

        tooltip: "Save All"

    }

    {

        type: "button"

        icon: 'printer'

        iconset: 'mdi'

        callback: "export-html:export"

        tooltip: "Print"

    }

    {

        type: "button"

        icon: 'magnify'

        iconset: 'mdi'

        callback: "find-and-replace:toggle"

        tooltip: "Find"

    }

    {

        type: "button"

        icon: 'folder-multiple-outline'

        iconset: 'mdi'

        callback: "project-find:show"

        tooltip: "Find In Project"

    }

    {

        type: "button"

        icon: 'cursor-text'

        iconset: 'mdi'

        callback: "multi-cursor:expandDown"

        tooltip: "Multi Cursor"

    }

    {

        type: "button"

        icon: 'auto-fix'

        iconset: 'mdi'

        callback: "atom-beautify:beautify-editor"

        tooltip: "Beautify"

    }

    {

        type: "button"

        icon: 'image-filter-hdr'

        iconset: 'mdi'

        callback: "svg-preview:toggle"

        tooltip: "SVG Preview"

    }

    {

        type: "button"

        icon: 'google-chrome'

        iconset: 'mdi'

        callback: "open-in-browsers:Chrome"

        tooltip: "Open in Chrome"

    }

    {

        type: "button"

        icon: 'eyedropper-variant'

        iconset: 'mdi'

        callback: "color-picker:open"

        tooltip: "Color Picker"

    }

    {

        type: "button"

        icon: 'function'

        iconset: 'mdi'

        callback: "symbols-view:toggle-file-symbols"

        tooltip: "Functions"

    }

    {

        type: "button"

        icon: 'code-equal'

        iconset: 'mdi'

        callback: "split-diff:enable"

        tooltip: "Split Diff"

    }

    {

        type: "button"

        icon: 'format-textdirection-l-to-r'

        iconset: 'mdi'

        callback: "window:toggle-invisibles"

        tooltip: "Show All Characters"

    }

    {

        type: "button"

        icon: 'sort-alphabetical'

        iconset: 'mdi'

        callback: "sort-lines:sort"

        tooltip: "Sort"

    }

    {

        type: "button"

        icon: 'sort-numeric'

        iconset: 'mdi'

        callback: "sorter:natural-sort"

        tooltip: "Sort Natural"

    }

    {

        type: "button"

        icon: 'arrow-up-bold'

        iconset: 'mdi'

        callback: "editor:upper-case"

        tooltip: "Upper Case"

    }

    {

        type: "button"

        icon: 'arrow-down-bold'

        iconset: 'mdi'

        callback: "editor:lower-case"

        tooltip: "Lower Case"

    }

    {

        type: "button"

        icon: 'spellcheck'

        iconset: 'mdi'

        callback: "spell-check:correct-misspelling"

        tooltip: "Correct Misspelling"

    }

    {

        type: "button"

        icon: 'lock'

        iconset: 'mdi'

        callback: "editor:toggle-line-comments"

        tooltip: "Commenting Out Code"

    }

    {

        type: "button"

        icon: 'console'

        iconset: 'mdi'

        callback: "command-palette:toggle"

        tooltip: "Command Palette"

    }

    {

        type: "spacer"

    }

    {

        type: "button"

        icon: 'markdown'

        iconset: 'mdi'

        callback: "markdown-preview:toggle"

        tooltip: "Markdown Preview"

    }

    {

        type: "button"

        icon: 'code-tags'

        iconset: 'mdi'

        callback: "markdown-writer:toggle-codeblock-text"

        tooltip: "Code"

    }

    {

        type: "button"

        icon: 'link-variant'

        iconset: 'mdi'

        callback: "markdown-writer:insert-link"

        tooltip: "Insert Link"

    }

    {

        type: "button"

        icon: 'image'

        iconset: 'mdi'

        callback: "markdown-writer:insert-image"

        tooltip: "Insert Image"

    }

    {

        type: "button"

        icon: 'format-bold'

        iconset: 'mdi'

        callback: "markdown-writer:toggle-bold-text"

        tooltip: "Bold"

    }

    {

        type: "button"

        icon: 'format-italic'

        iconset: 'mdi'

        callback: "markdown-writer:toggle-italic-text"

        tooltip: "Italic"

    }

    {

        type: "button"

        icon: 'format-list-bulleted'

        iconset: 'mdi'

        callback: "markdown-writer:toggle-ul"

        tooltip: "Unordered List"

    }

    {

        type: "button"

        icon: 'format-list-numbers'

        iconset: 'mdi'

        callback: "markdown-writer:toggle-ol"

        tooltip: "Ordered List"

    }

    {

        type: "button"

        icon: 'format-header-1'

        iconset: 'mdi'

        callback: "markdown-writer:toggle-h2"

        tooltip: "Heading 1"

    }

    {

        type: "button"

        icon: 'format-header-2'

        iconset: 'mdi'

        callback: "markdown-writer:toggle-h3"

        tooltip: "Heading 2"

    }

    {

        type: "button"

        icon: 'format-header-3'

        iconset: 'mdi'

        callback: "markdown-writer:toggle-h4"

        tooltip: "Heading 3"

    }

    {

        type: "button"

        icon: 'table'

        iconset: 'mdi'

        callback: "markdown-writer:insert-table"

        tooltip: "Insert Table"

    }

    {

        type: "button"

        icon: 'table-edit'

        iconset: 'mdi'

        callback: "markdown-writer:format-table"

        tooltip: "Format Table"

    }

]

blog.harrix.org

Настройка Atom от GitHub для работы с PHP, Python и некоторыми другими языками программирования

Редактор Atom от GitHub после установки поддерживает подсветку синтаксиса для основных языков программирования. Однако для более полноценной работы — валидации кода, проверки синтаксиса, базовой отладки и снипетов, как и в большинстве редакторов кода, необходимо подключение дополнительных пакетов и ряд действий. Под катом так же дополнительно расскажем: Внимание трафик — кликабельные картинки и анимированые gif. (~3МБ)

Изначально считаем что у Вас установлена поддерживаемая операционная система, Node.JS и Atom. В примерах мы работаем в OpenSUSE (13.1) в нём (и вообще в дистрибутивах *nix) уже «из коробки» обычно есть не только Python но PHP и другие языки программирования. Так же исправно работает на Ubuntu (>12.04). Если у Вас Windows 7 или 8, а раньше Вы с ними (языками) не работали то их предварительно необходимо скачать и установить. Примечание: перед началом работы желательно запускать Atom под root. опыт показывает — работает стабильнее

Linter
Идеология Atom к подсветке в том, что основным пакетом для работы с синтаксисом и его анализа будет Linter, который является верхним уровнем в API для других линтеров кода. Это сделано для прекращения «войны между плагинами» (The idea is to stop the linter plugins war, by providing a top level API for linters to parse and display errors in the Atom editor). Тем не менее, не все сторонние разработчики придерживаются этой идеологии и пишут свои плагины.

На текущий момент доступно для 21 языка :
Пакет Script: запуск программ из Atom
Script — пакет для запуска кода в atom.

Установка пакета Script, возможна из командной строки:

apm install script или менюPackages->Settings View->Install->PackagesВ результате должны поддерживаться следующие языки (26):

AppleScript Bash Behat Feature Coffeescript CoffeeScript (Literate) ^ Cucumber (Gherkin) * Elixir Erlang † F# * Go * Groovy Haskell Javascript Julia LilyPond LiveScript Lua MoonScript newLISP Perl PHP Python RSpec Ruby Scala Swift

Каждый язык работает, при наличии предварительно установленного компилятора / интерпритатора. Пакет Script обновляется довольно часто. Например поддержка Swift появилась менее двух недель назад. Так что скорее всего в ближайшее время появится поддержка новых языков.

Для запуска программы необходимо выбрать Packages-->Script-->Run

Дополнительные опции можно найти в документации либо на страницах Atom`а или проекта.

Для функционирования должен быть создан рабочий каталог. Путь к нему нужно прописать здесь: Packages-->Script-->Configure Script-->Current Working Directory Заявку разработчикам на поддержку нового языка можно оставить здесь (отвечают быстро)

И немного юмора от разработчиков пакета Script, у которых, судя по всему, спрашивают всё на свете:первод: Атом не может найти Нод | Руби | Питон | Мои носки

Python
Поддержка подсветки этого языка идёт изначально. Пакеты для работы с синтаксисом и отладки: Linter + Language Python + Linter Python Pep8 + Script

Script запускает код на Python, а Linter и Linter Python Pep8 покажут синтаксические ошибки. Возможно Вам, для работы с Python также поможет Atom Python Debugger. Подсветка ошибок и запуск после установки будут выглядеть так:

PHP
Для PHP мы так же подключали Script и некоторые пакеты:Atom показывает ошибки синтаксиса и запускает php скрипт:

Swift
Для Mac OS есть по меньшей мере два варианта запуска кода Swift: К сожалению под Mac ничего не пишем, поэтому этот пункт со слов разработчиков. Сразу отмечено, что Swift запустится только на Mac OS, другие дистрибутивы его не поддерживают. Подcветка синтаксиса swift работает на любом дистрибутиве после установки пакета Language Swift:
Терминал
Для запуска исполняемого кода С, C++, Java иногда проще использовать сторонний пакет (не пакет Atom, а пакет вашего дистрибутива), который запускается через терминал, поскольку сам Atom поддерживает большое количество языков. Если Atom выступает в качестве редактора кода, a терминал рядом запускает его — это очень удобно для нас, поскольку терминал не имеет такое преимущество редактирования, как Atom. Для запуска терминала в окне Atom установите пакет Term. Для запуска терминала в окне Atom выбрать Packages-->Command Palette-->Toggle и Term с нужными параметрами.

В заключении ещё один интересный кликабельный анимационный gif от разработчиков script, ссылки.

Ссылки

habrahabr.ru

Установить текстовый редактор Atom в Ubuntu/Linux mint и др.

В избранное

Atom — это бесплатный текстовый редактор с открытым исходным кодом для OS X, Linux, Windows с поддержкой плагинов, написанных на Node.js, и встраиваемых под управлением Git Control.

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

Главная особенность Atom — богатые возможности по настройке. Редактор можно настроить на свой вкус и цвет(в прямом смысле). Изначально в него встроен файловый менеджер, функция поиска и замены, разнообразные курсоры, опция сворачивания кода и тд.

Основные возможности

Установить Atom в Ubuntu/Linux mint/Elementary и др.

Команда Webupd8 поддерживает неофициальный PPA с самыми последними пакетами Atom для всех релизов Ubuntu текущих и производных. В то время как официальный репозиторий Linux поддерживает только 64-битную версию программы.

Для установки этого текстового редактора, откройте терминал (Ctrl+Alt+T), и введите следующие команды

sudo add-apt-repository ppa:webupd8team/atom sudo apt update sudo apt install atom

После того, как вы установите Atom, и в будущем появится новый релиз, вы можете просто обновить редактор, запустив регулярные обновления системы с помощью утилиты Software Updater.

Если вдруг вы захотите удалить Atom из вашей системы, то введите следующую команду в терминале

sudo apt remove --purge atom

А вы каким пользуетесь текстовым редактором?

Похожее

Автор публикации

475

Если вы хотите быть на этом месте, и писать статьи для нас, то напишите мне в чат, и здесь будет ваше имя.

Комментарии: 149Публикации: 523Регистрация: 10-06-2016

linuxthebest.net


Смотрите также