Как создать собственную среду разработки без мыши

Опубликовано: 2022-03-10
Краткий обзор ↬ Создание среды разработки с использованием оболочки в качестве краеугольного камня дает множество преимуществ. Вы можете использовать инструменты, которые хорошо сочетаются друг с другом, вы можете настраивать все в зависимости от ваших собственных потребностей, и, самое главное, вы можете управлять всей своей средой разработки с помощью клавиатуры. Это может сэкономить много когнитивной энергии, а также обеспечить приятный пользовательский опыт.

Давным-давно в волшебной стране разработки программного обеспечения жил-был молодой разработчик, ваш покорный слуга, который впервые открыл для себя Linux. Внезапно у меня появился доступ к оболочке Linux, инструменту, предлагающему множество способов автоматизировать все, что я не хотел делать снова и снова.

Но Ubuntu не был лишен недостатков. Я часто становился жертвой ошибок отображения и сбоев, и со временем это становилось все медленнее и медленнее.

Однажды случилось нечто ужасное: мне пришлось обновить Ubuntu до следующей основной версии. Все разбилось. Я больше не мог запускать свою систему. Я понятия не имел, как мне решить проблемы, с которыми я столкнулся, потому что я понятия не имел, как Linux работает под капотом. Ubuntu абстрагировал все мелочи, чтобы я не заботился об этом.

Мне пришлось переустанавливать все вручную — Ubuntu и все мои инструменты. Хуже всего было перенастроить все. В общем, мне потребовались дни, чтобы вернуться к системе, которая была у меня до краха. Но я не знал другой альтернативы, поэтому годами продолжал использовать Ubuntu. За это время мне ни разу не удалось обновить его до следующей основной версии без необходимости переустанавливать все вручную, снова и снова.

Моя жизнь как разработчика снова изменилась, когда моя компания наняла двух замечательных разработчиков. Они много знали о Linux и различных дистрибутивах, которые я мог использовать. Они направили меня, показали мне инструменты, которые решили все проблемы, которые у меня были с Ubuntu. Эти инструменты значительно улучшили мой рабочий процесс ; они показали мне, насколько практично для разработчика держать руки на клавиатуре как можно дольше.

Это произошло шесть лет назад. Я до сих пор использую ту же среду разработки. Я использую клавиатуру 92,8% времени для управления всеми своими инструментами, используя понятные и легко запоминающиеся нажатия клавиш. Я могу переустановить всю свою систему с кучей написанных мной сценариев, включая все инструменты, которые я использую, и их настройки.

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

  • Почему использование оболочки Linux может быть очень эффективным при работе с простым текстом (включая код);
  • Зачем использовать страшный Arch Linux;
  • Преимущество тайлового оконного менеджера;
  • Как улучшить работу терминала с URxvt, tmux и tmuxp;
  • Почему Вим может стать вашим лучшим другом.

Примечание . Инструменты, которые я рекомендую в этой статье, работают в системах на базе Linux. Вы также можете использовать их с macOS, кроме i3. Для Windows самый простой способ — использовать подсистему Windows Linux (WSL) для их установки и использования.

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

без мыши с оболочкой

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

Преимущества оболочки

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

Терминал представляет собой графический интерфейс, позволяющий взаимодействовать с оболочкой. В Linux этой оболочкой часто является Bash, но это может быть и другая оболочка, например, Zsh. Оболочка является интерпретатором. Вы можете кормить его командами, и он будет выполнять их для выполнения некоторых действий. Иногда это также будет возвращать вам результат. Термины «командная строка» и «оболочка» являются синонимами.

Если бы мы сравнили среду разработки без мыши с солнечной системой, то оболочкой было бы солнце, а все остальное вращалось бы вокруг него. Это потому, что оболочка действительно мощная: она позволяет запускать множество небольших программ, которые очень хорошо работают вместе. Они называются CLI (интерфейсы командной строки).

Большое преимущество этих инструментов: они очень просты и ограничены по отдельности, но вы можете объединить их для получения мощных результатов . Например, вы можете одновременно использовать CLI «история», «сортировка», «uniq» и «заголовок», чтобы отобразить CLI, которые вы используете чаще всего, и частоту их использования.

Оболочка Linux
Оболочка Linux. (Большой превью)

Доступно множество CLI. Во-первых, потому что оболочка Linux существует уже давно; разработчики успели разработать множество инструментов и сделать их надежными. Во-вторых, потому что CLI легче разрабатывать, чем GUI (графические пользовательские интерфейсы). Разработка и реализация этих графических интерфейсов требует гораздо больше работы. CLI имеют только текстовые интерфейсы , которые легче разрабатывать, изменять и поддерживать.

Именно поэтому интерфейсы командной строки работают быстро: не нужно возиться с отображением и другими графическими элементами. Это была одна из моих главных проблем с Ubuntu: среда рабочего стола Unity была довольно тяжелой, медленной и глючной. По крайней мере, по моему опыту. Использование большего количества графических интерфейсов ухудшило ситуацию.

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

Еще после прыжка! Продолжить чтение ниже ↓

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

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

Подход без мыши

Поскольку оболочка имеет текстовый интерфейс, при ее использовании ваши руки остаются на клавиатуре. Это то, о чем я никогда не задумывался в первые годы работы разработчиком, но это большое преимущество.

По моему опыту, отказ от сотен движений рук между клавиатурой и мышью экономит много когнитивной энергии. Я был потрясен, обнаружив, насколько удобно было, когда я действительно пытался придерживаться своей клавиатуры. В качестве бонуса я чувствую себя хакером, использующим только мою клавиатуру с моей оболочкой, даже если я только пишу свой список покупок! Насколько это здорово?

Должен признаться, я очень скептически относился к этой «безмышиной» идее, прежде чем попробовать ее. С инструментами, которые я описываю ниже, мне не нужно менять все свои привычки изо дня в день: с ними можно использовать и мышь. Но они действительно сияют, когда ими управляют с клавиатуры.

Даже если это никогда не было доказано, я также считаю, что работа с клавиатурой делает нас более эффективными . Как указано в книге The Pragmatic Programmer :

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

При этом эффективность здесь не является главной целью. Мне нравится оставаться на клавиатуре и использовать все эти инструменты, потому что я могу полностью сосредоточиться на текущих задачах. Это мотивирует меня начать работать и выполнять свои задачи.

Основа: Arch Linux

В начале моего путешествия без мыши один из моих новых друзей посоветовал мне использовать Arch Linux вместо Ubuntu. Снова закрадывался скептицизм, сомнения вторгались в мой бедный мозг. Арх Линукс? Этот ужасный дистрибутив Linux вам нужно установить и настроить полностью вручную? Эта нестабильная система стала для многих шуткой?

Иногда стереотипы не имеют ничего общего с реальностью, и Arch Linux — прекрасный пример для этой идеи. Я использовал Windows (с 98 по 7), macOS, пробовал и другие дистрибутивы Linux. Мой вывод без сомнений: Arch Linux самый стабильный из всех.

При этом Arch Linux не является обязательным требованием для среды разработки без мыши. Вы можете использовать все остальные инструменты, описанные в этой статье, и с другими дистрибутивами Linux. Вы также можете использовать их с macOS (кроме i3) или Windows, если у вас есть подсистема Windows для Linux (WSL). Но прежде чем вы это сделаете, позвольте мне рассказать вам, почему вы должны серьезно рассмотреть Arch Linux .

Система непрерывного выпуска

Arch Linux имеет систему непрерывного выпуска . Это означает, что вам нужно обновлять всю систему часто, еженедельно или раз в две недели. Чтобы вернуться к Ubuntu, у нее есть система долгосрочной поддержки : вам нужно обновлять ее всего пару раз в год или даже реже, если хотите.

Многие разработчики считают, что система непрерывного выпуска делает вашу среду разработки нестабильной, что частично объясняет репутацию Arch Linux. Но у меня никогда не было проблем за шесть лет ежедневного использования, и у моих друзей тоже. С другой стороны, преимущества прокатной системы велики:

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

Я рассказал вам о своем опыте работы с Ubuntu и о сбоях при ее обновлении. У меня никогда не было проблем с Arch Linux.

Все что тебе нужно

Кроме того, репозитории Arch Linux огромны. Вполне вероятно, что вы найдете там все необходимые инструменты. Если нет, то можете заглянуть в AUR (Arch User Repositories), где есть все остальное. AUR не является официальным репозиторием, поэтому с найденными там приложениями могут возникнуть проблемы с безопасностью. Опять же, у меня никогда не было проблем с ними, но это возможно. Пока вы придерживаетесь официальных репозиториев и не устанавливаете все и вся из AUR, у вас не будет никаких проблем.

Возможность обучения

Отметим также, что Arch Linux — очень минимальный дистрибутив. Он не навязывает много бесполезных приложений при его установке. Кстати говоря, вам нужно установить весь дистрибутив вручную, используя оболочку. Задача может показаться сложной, но, с другой стороны, вы многому научитесь на своем опыте.

Как я упоминал в начале этой статьи, минимальное знание того, как работают системы на основе Linux, может помочь вам, когда ваша система ведет себя странно или когда она дает сбой. Это не так сложно, как может показаться, и, если вы разработчик, я бы сказал, что это обязательно. Интернет, ваш телефон или ваш малиновый пирог сегодня работают на Linux.

И последнее, но не менее важное: Arch Wiki — лучшее место, где вы можете найти все, что связано с Linux. Это очень помогло мне за эти годы, даже когда я использовал Ubuntu. Это отличное место для устранения неполадок в вашей системе и поиска новых инструментов.

Управление Windows с помощью i3

Теперь, когда мы рассмотрели, почему Arch Linux может стать прочной основой для вашей среды разработки без мыши, давайте посмотрим, что мы можем добавить к ней.

Но сначала немного теории. Операционные системы часто имеют три уровня, более или менее связанных друг с другом:

  1. Ядро , которое напрямую связано с железом вашего компьютера;
  2. Оболочка , интерфейс для вас или некоторые приложения для взаимодействия с ядром;
  3. Слой отображения поверх, например диспетчер рабочего стола или оконный менеджер.

Gnome или Unity — это менеджеры рабочего стола для систем на базе Linux. Они управляют вашими окнами и многими другими вещами, такими как строка состояния или панель запуска приложений. Мозаичные оконные менеджеры являются альтернативой менеджерам рабочего стола, и они часто меньше по размеру и больше ориентированы на управление окнами.

Тайлинговый оконный менеджер i3 действительно очень легкий: я использую его прямо сейчас на компьютере десятилетней давности (Lenovo x220), и он не тормозит. Он также прост в использовании, документация великолепна, и, самое главное, вы можете управлять своими окнами только с помощью клавиатуры (если хотите).

Основы i3 просты: вы можете открывать окна в разных рабочих областях, представляющих весь экран . Это очень похоже на виртуальные рабочие столы, которые есть у многих менеджеров рабочих столов Linux. Затем, когда вы открываете свои любимые приложения, экран будет автоматически делиться в зависимости от количества окон на экране.

Например, если вы откроете Firefox, его окно займет 100% экрана. Если вы откроете три экземпляра Firefox, каждый из них займет 33% экрана.

i3 с окном Firefox
i3 с окном Firefox. (Большой превью)

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

i3 со сложенными окнами Firefox
i3 со сложенными окнами Firefox. (Большой превью)

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

Это выглядит слишком сложно? Я был эффективен с i3 через два дня после того, как попробовал его. я не гений; если я смог это сделать, то и ты сможешь.

Вишенка на торте: как и любой инструмент, описанный в этой статье, вы можете настроить i3 и его нажатия клавиш как душе угодно.

Единственный недостаток i3: он недоступен для macOS. Но есть отличные альтернативы , такие как оконный менеджер Amethyst или Divvy.

Повысьте уровень своего терминала с помощью URxvt, tmux и tmuxp

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

Путь простоты с URxvt

Мне нравится простота, и отчасти поэтому мне нравится среда разработки, которую я описываю в этой статье. Говоря об этом, URxvt — один из самых простых терминалов, которые вы можете найти. Это также быстро и надежно. За шесть лет я ни разу не видел, чтобы он ломался или даже тормозил. Он делает то, что должен делать: позволяет вам использовать оболочку. Ни больше ни меньше.

Терминальный мультиплексор с tmux

Даже если мне нравится простота URxvt, мне также нравится иметь хороший терминальный мультиплексор, на который я могу положиться, например, tmux.

Что такое терминальный мультиплексор? Он позволяет открывать сеансы, содержащие несколько оболочек . Эти сеансы сохраняются в фоновом режиме: даже если ваш терминал выйдет из строя или вы случайно закроете его, ваши оболочки не исчезнут. Вы можете восстановить их в другом терминале, когда захотите (как ни в чем не бывало).

Это полезно на вашем локальном компьютере, но еще лучше на удаленном сервере. Вы можете, например, подключиться к серверу через SSH, запустить скрипт, закрыть SSH-соединение и терминал на локальном компьютере и вернуться домой. Поскольку ваша оболочка все еще работает на вашем сервере благодаря tmux, ваш скрипт тоже будет работать.

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

Напоминает i3? Он следует тем же принципам, но может создавать только новые оболочки. Вот почему многие пользователи, довольные i3, не видят смысла в использовании tmux. Лично мне нравится использовать оба.

Tmux с 4 окнами и 4 панелями
Tmux с 4 окнами и 4 панелями. (Большой превью)

Как всегда, вы можете манипулировать окнами и панелями tmux с помощью клавиатуры, и вы можете настроить сам tmux в соответствии с вашими самыми безумными желаниями.

tmuxp

Давайте представим, что вы хотите использовать tmux для разрушающего приложения, которое вы сейчас разрабатываете. Сначала вам нужно открыть терминал. Затем вам нужно создать столько окон tmux, сколько вам нужно, и разделить эти окна на нужные вам панели.

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

Но вы также можете автоматизировать все это, и именно здесь проявляется настоящая мощь tmux — в контексте среды разработки. Используя другой интерфейс командной строки, называемый tmuxp, вы можете записать в файл конфигурации YAML, какие окна, панели и любую команду вы хотите. Затем вы можете загрузить эту конфигурацию и автоматически создать свой индивидуальный сеанс tmux.

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

Редактор плюс оболочка равно IDE

Поскольку оболочка такая мощная, почему бы не запустить в ней непосредственно редактор? Почему бы не использовать Вим?

Как и Arch Linux, Vim имеет репутацию сложной для изучения системы. Это более тонко: с ним довольно легко работать продуктивно, но для освоения требуется много времени. Если вы используете Linux и у вас установлен Vim, вы можете изучить основы за 20 минут , запустив vimtutor в своей оболочке.

Vim предлагает множество функций, которые можно расширить с помощью бесчисленных плагинов. Кроме того, вы можете напрямую взаимодействовать со своей оболочкой с помощью Vim, используя любой интерфейс командной строки, который вы хотите, прямо в вашем редакторе. Это превратит Vim в полноценную IDE.

У Vim есть еще одно большое преимущество: вы можете использовать его для разработки на многих языках программирования. Мне не нравится переключаться между разными IDE каждый раз, когда мне нужно программировать на PHP, Golang или Clojure. Интерфейс другой, мне нужно настроить каждый из этих редакторов отдельно, и я не могу где-то сохранить настройки, чтобы использовать их снова при переустановке этих инструментов.

С Vim я могу кодировать на любом языке, оставаясь в том же редакторе . Как и в VS Code, вы можете использовать LSP (поставщики языковых серверов), чтобы включить автозаполнение, анализ и автоматический рефакторинг для наиболее распространенных языков программирования (и даже более экзотических).

Вим в действии
Вим в действии. (Большой превью)

Вим тоже быстрый. Для запуска не требуется много ресурсов. У меня на старом компьютере постоянно открыто 6 или 7 экземпляров редактора — без проблем. Для сравнения, я использовал IntelliJ IDE в течение многих лет, и когда я открывал две из них, вся моя система начинала тормозить. Это очень удобно, когда я одновременно работаю над разными проектами, например над кучей микросервисов.

Должен ли я добавить, что Vim легко настраивается ? Вместо того, чтобы иметь много функций непосредственно в вашей IDE (включая те, которые вы никогда не будете использовать), вы можете выбрать то, что вам точно нужно, и отказаться от того, что вам не нужно.

Набор последовательных нажатий клавиш

Если Arch Linux — основа моей среды разработки без мыши, то i3, Zsh, tmux и Vim — рабочие места для моих творческих нужд. Это дает мне уровень комфорта, которого я никогда не испытывал ни с какими другими инструментами.

Но вы можете задаться вопросом, зачем вам использовать все эти новые инструменты и их сочетания клавиш, если вы уже можете использовать сочетания клавиш для инструментов, которые вы уже знаете?

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

Инструменты, которые я описываю в этой статье, должны хорошо сочетаться друг с другом. Вы можете почти использовать одно и то же нажатие клавиши для каждого из них. Будет отличаться только одна клавиша, чтобы система знала, с каким инструментом вы хотите воздействовать. Это облегчает запоминание различных нажатий клавиш.

Кроме того, Vim был разработан так, чтобы нажатия клавиш имели смысл, создавая простой язык, на который вы можете положиться. Например, чтобы удалить слово, вы можете нажать daw . Чтобы удалить абзац, это dap . Поскольку многие интерфейсы командной строки основаны на нажатиях клавиш Vim, изучение Vim откроет двери для многих других интерфейсов командной строки .

Автоматическая установка среды разработки без мыши

Установка Arch Linux вручную хороша для того, чтобы много узнать о системах на базе Linux, но она устаревает, когда вам нужно делать это каждый раз, когда вы хотите установить свою систему на новый компьютер. Вот почему я создал свои собственные сценарии для установки всей среды разработки без мыши. Они устанавливают Arch Linux, а также все инструменты, которые я использую с их конфигурациями. Когда мне нужно использовать новый компьютер, я могу просто запустить эти скрипты, и вуаля!

Готовы ли вы стать разработчиком без мыши?

Из-за гибкости моей среды разработки я также могу легко переключаться между инструментами. Например, если я больше не хочу использовать tmux, я могу заменить его другим терминальным мультиплексором. Если мне не нравится строка состояния i3 или панель запуска приложений, я тоже могу их заменить.

Как вы могли догадаться, настройка такой системы требует некоторого времени, мотивации и усилий . Вот почему я написал книгу под названием «Создание среды разработки без мыши». В нем подробно описано, как настроить все инструменты, как создать скрипты для установки всей системы одной командой и как настроить все под свои личные нужды. Если вы мало знакомы с оболочкой Linux, вы можете создать собственный проект, чтобы ознакомиться с ней.

Если вам интересно, вы найдете здесь образец книги, а также полное ее содержание.

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

Дальнейшее чтение в журнале Smashing Magazine

  • «Я пользовался Интернетом целый день, имея только клавиатуру», — Крис Эштон.
  • «Полное руководство по механическим клавиатурам», Бен Фрейн
  • «Доводы в пользу доступности», Тодд Либби.
  • «Специальные возможности в Chrome DevTools», Умар Ханса.