Если вы, как и я, являетесь пользователем vim, вероятно, вам приходилось использовать другие текстовые редакторы в какой-то момент, и вам это не понравилось. Первым логическим шагом будет поиск плагина Vim для вашего текстового редактора, но на самом деле они почти все плохие. Нет режима визуального блока, нет прыжков (ctrl-O), в некоторых из них нет даже экс-режима.

Но мне нравится все время пробовать новые текстовые редакторы. Когда я впервые увидел атом, я увидел, что он многообещающий, невероятно настраиваемый и построенный на основе веб-технологий. Я подумал, что кто-то, должно быть, сделал для него хороший плагин vim, и если он не справится с работой, я смогу хотя бы подправить его.

Итак, я впервые попробовал Atom и был приятно удивлен. У него есть ex-mode (хотя и очень неполный и как другой плагин). Он поддерживал большинство вещей, которые я обычно делаю в vim, даже некоторые сложные команды. Однако для меня у него был большой недостаток. Vim-mode (пакет atom, теперь vim-mode-plus попробуйте новую версию) не поддерживал переходы (Ctrl-O, Ctrl-I), что я часто использую при кодировании. Поэтому я решил пойти по пути Атома и взломать его.

СОВЕТ: Установить пакет в Atom невероятно просто, вы можете сделать это через командную строку apm install ‘package name’ (без «») или в самом Atom вы можете искать пакеты, используя Ctrl + Shift + P и просматривая или «Установить пакеты».

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

Итак, после небольшого исследования того, как работают пакеты Atom, я узнал, что они основаны на файле CSON (объектная нотация сценария Coffe, очень похожая на JSON). А внутри папки config (~ / .atom в linux) у каждого пакета была своя папка. Немного поработав, я понял, что добавление следующего кода позволяет мне добавлять привязки клавиш для переходов на глобальном keymap.cson ( '~ / .atom / keymap.cson')

Увидев, насколько легко было добавить собственные привязки клавиш для функции пакета, я решил продолжить.

СОВЕТ: Atom перезагрузит ваши привязки клавиш, как только вы сохраните файл, нет необходимости перезапускать его, прежде чем вы попробуете.

imap jj ‹ESC›

Еще одним из моих главных приоритетов было сопоставление «JJ» как клавиши выхода. К счастью, vim-mode отлично справляется с горячими клавишами. Однако на этот раз мы должны добавить горячую клавишу непосредственно в привязки клавиш vim-mode (~ / .atom / packages / vim-mode / keymaps / vim-mode.cson), так как она должна срабатывать только в обычном режиме. режим.

Как видите, вместо того, чтобы полностью писать новый блок горячих клавиш (как я сделал для atom-workspace), я просто добавил привязку клавиш ‘J J’ внутри существующего блока режима вставки. Добавление еще одной привязки клавиш в vim-mode всегда полезно, потому что это позволяет вам гибко выбирать, в каких режимах эта привязка запускается. Однако он не очень хорошо работает при перезаписи глобальной раскладки клавиатуры, такой как Ctrl-O для открытия файла.

Проверка орфографии z =

Если вы используете vim для проверки орфографии при написании файлов Markdown или Tex, вы, вероятно, знакомы с ‘z =’. Поскольку я много работаю в университете над своим текстовым редактором, эта функция очень важна. Atom поставляется с предустановленным пакетом проверки орфографии. Поэтому я решил добавить еще одну привязку клавиш к моему глобальному файлу keymap.cson.

Предустановленные пакеты не содержат отдельных папок и конфигураций. Они используют глобальные конфиги для атома. Поэтому, если вы войдете в свой keymap.cson в корневой папке, вы можете добавить ’z =’: ‘spell-check:correct-misspelling’.

Это может и, вероятно, должно быть добавлено как привязка клавиш в обычном режиме. Однако вам также будет намного проще отслеживать свои модификации, если вы сохраните все свои привязки клавиш в этом глобальном файле, а не на сотнях строк кода vim-mode.

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

СОВЕТ: Ctrl +. вызовет распознаватель привязки клавиш, это здорово, чтобы выяснить, что происходит за кулисами, и выяснить имя функции.

Что я думаю об Атоме

После этих небольших настроек я, наконец, смог использовать Atom, но, конечно же, нужно помнить о нескольких вещах. Как я уже упоминал, в атоме отсутствует режим ex, но это не проблема, благодаря ctrl + shift + p Atom. Atom предоставляет нечеткий поиск команд, который позволяет вызывать практически любую функцию почти как улучшенный бывший режим. Просто начните что-нибудь печатать, и вы наверняка найдете то, что хотите. Atom также невероятно медленный, если сравнить его с vim. Однако в большинстве случаев это не проблема, а когда это полезно, всегда рядом с вами.

Еще одна вещь, которая удерживает меня от большинства текстовых редакторов, - это плагины vim. Даже в хорошей vim-оболочке не будет всех плагинов, к которым я привык. Однако, как вы можете видеть из моих рекомендаций по пакетам Atom ниже, большинство из них используются по умолчанию в Atom или имеют аналогичный плагин, легко устанавливаемый через APM (диспетчер пакетов Atom).

Почему Атом?

Теперь многие из вас спрашивают, почему именно Atom? Я использую vim в течение многих лет, и он отлично работает. Я согласен, в Atom нет ничего особенного, что заставило бы вас прекратить использовать vim в данный момент. Однако самая большая особенность Atom - это то, что его можно взломать и на нем так легко развиваться. Да, некоторые из них будут содержать сотни строк в вашем .vimrc и, возможно, даже ваши собственные плагины, такие как я. Однако дело в том, когда появляется новый язык, такой как кофейный сценарий или машинописный текст. Atom поддержит его практически мгновенно. Это просто потому, что любой, обладающий небольшими навыками программирования, может быстро написать выделитель синтаксиса и линтер для Atom. В конце концов, все сводится к тому, что coffee-script (язык пакетов Atom) легче разрабатывать по сравнению с vimL.

Если вы мне не верите, посмотрите, что делает Facebook. Вы, наверное, слышали о React или, возможно, Hack (версия PHP для Facebook). Из-за нового современного синтаксиса React Facebook решил создать для него собственную IDE, но вместо того, чтобы тратить тысячи часов на разработку совершенно новой IDE. Они сделали Nuclide, невероятно сложный и мощный пакет для Atom. Nuclide полностью трансформирует Atom в собственной IDE Facebook. Большим преимуществом для Facebook является то, что они могут повторно использовать большую часть кода Atom и сэкономить сотни часов на разработке. Между тем, для таких разработчиков, как мы, мы можем использовать Nuclide со всеми нашими настройками Atom (включая привязки vim) в этой новой среде IDE.

Для меня есть две основные вещи, которые заставляют меня вернуться в Атом. Во-первых, как я уже упоминал, здорово разрабатывать новые технологии, поскольку это будет один из первых текстовых редакторов, поддерживающих новые технологии. А также тот факт, что мне не нужно брать на себя обязательства. Мне не нужно изучать Atom, чтобы использовать его, как это было с Vim. Я могу научить Atom работать так, как мне нравится, и сегодня переход между Atom и Vim для меня довольно прост и практически не требует настройки. В качестве последнего бонуса Atom является корректно кроссплатформенным.