Если вы разработчик или опытный пользователь, вы наверняка понимаете, как важно иметь эффективный и организованный рабочий процесс.
Когда мне приходится работать с системой на базе Windows, я очень скучаю по эмулятору терминала и возможности быстро переключаться между различными терминальными сессиями. Не говоря уже о том, что иногда мне нужно собрать 2-3 командные сессии в одном представлении. Существует множество сценариев, когда мне нужно выполнять несколько команд одновременно.
Конечно, у нас есть командная строка или Терминал Windows, но этого недостаточно для аналогичного опыта.
В Linux у меня был доступ к терминальным мультиплексорам, таким как Tmux и Screen.
Но, подождите, в Windows 10 и Windows 11 есть решение, которое может работать как терминальный мультиплексор и текстовый редактор – все в одном!
Зачем использовать Emacs в качестве терминального мультиплексора?
Хотя я уже говорил о том, почему мы рассматриваем такое решение, как Emacs, позвольте мне привести еще несколько причин, по которым вы захотите попробовать это решение (помимо того, что оно с открытым исходным кодом и просто замечательное):
1. Меньше – значит больше
Emacs – это универсальное решение. Он может работать как терминал, текстовый редактор, Файловый менеджер, почтовый клиент, калькулятор, текстовый веб-браузер. Все эти возможности упакованы в 150-мегабайтный файл в формате zip. Довольно безумно, правда? Вы не узнаете всего этого, пока не попробуете!
2. Мощная настройка
Emacs славится своей настраиваемостью. Вы можете настроить практически все: привязки клавиш, макеты окон, темы и даже поведение терминальных сессий. Это позволяет настроить среду под свои нужды, обеспечивая высокую эффективность работы.
3. Интегрированная поддержка оболочки
Emacs позволяет открывать сеанс оболочки внутри буфера, а благодаря поддержке eshell и shell вы можете запускать команды оболочки, работать с файлами и выполнять операции прямо во время редактирования текста.
4. Гибкость Windows
Emacs отлично справляется с несколькими буферами в одном окне. Вы можете разделить окно на несколько панелей (или «окон», как их называет Emacs), как и в tmux, что позволит вам работать над разными задачами одновременно, не ощущая загромождения.
Использование Emacs в качестве терминального мультиплексора
Теперь, когда вы знаете о преимуществах, чтобы помочь вам использовать его, позвольте мне рассказать вам об использовании Emacs в качестве терминального мультиплексора.
Шаг 1: Установите Winget
winget поставляется в составе пакета App Installer. Поэтому сначала вам нужно установить App Installer из:
Шаг 2: Установка Emacs на Windows 11 или Windows 10
С помощью Winget установить Emacs очень просто. Просто выполните эту команду:
winget install emacs
Шаг 3: Откройте Emacs
Откройте Emacs из меню «Пуск» Windows 11.
Шаг 4: Запустите оболочку
В emacs нажмите Alt + X, введите shell и нажмите Enter, чтобы открыть интерактивный пользовательский интерфейс.
Теперь, используя Emacs, вы получите следующие преимущества:
- Красивая система автозавершения.
- Возможность редактировать любую предыдущую команду в нужный момент.
- Быстрое переключение между различными командными сессиями.
Чтобы увидеть автозаполнение в буфере shell, просто введите a, а затем нажмите Tab, и вам будет представлен список опций. Вы можете выбрать один из вариантов щелчком мыши, как показано выше.
Для поиска предыдущих команд и выводов нажмите C-s. Это то, что я имел в виду, когда говорил о постоянных связках клавиш для всего рабочего процесса. В среде Emacs клавиша C-s будет выполнять поиск вперед везде, если вы не измените ее.
Чтобы отредактировать предыдущие команды, переместите курсор на предыдущую команду или выполните быстрый поиск, внесите необходимые изменения и нажмите Enter.
Если вы хотите открыть другую оболочку, нажмите клавиши C-u, а затем Alt + x, чтобы открыть другую оболочку.
По умолчанию этот буфер будет называться Shell 2. Перемещаться между разными оболочками можно с помощью клавиш C-x b и Tab. Для выделения используйте мышь. В следующем разделе мы расскажем о том, как это сделать более эффективно.
Мультиплексирование терминалов
А вот и волшебство. Если вы хотите создать два вертикальных макета, просто используйте привязку клавиш C-x 3. Если же вам нужны две горизонтальные раскладки, воспользуйтесь сочетанием клавиш C-x 2.
Для перехода к другим панелям вы можете использовать мышь или сочетание клавиш Emacs C-x o.
Автозавершение и многооконные раскладки
Еще один быстрый совет. Настроив всего одну строку, Emacs может предоставлять полезные завершения в зависимости от ваших действий с помощью режима ido-mode.
Сохраните приведенную ниже строку в новом файле .emacs, обычно расположенном под вашим пользователем C:/Users/YourUser/AppData/Roaming. После сохранения вам не нужно перезапускать Emacs.
(ido-mode 1)
Давайте также включим winner-mode, чтобы отменять и повторять многооконные макеты. Добавьте строку ниже в файл конфигурации, как вы делали это выше:
(winner-mode 1)
Наконец, сохраните эту двухстрочную конфигурацию
Просто сделайте Alt + x, а затем введите eval-buffer..
Теперь в режиме ido вы можете просто переключиться на буфер shell 2, используя C-x b 2.
В режиме winner-mode, если вы хотите получить полный предварительный просмотр одной панели, нажмите C-x 1, а затем, чтобы вернуться к предыдущей раскладке, выполните команду
winner-undo
Вы можете сэкономить себе время, назначив привязку клавиш для команд winner-undo и winner-redo.
Шпаргалка по привязкам клавиш
Здесь представлен список всех привязок клавиш, которые мы использовали в этом уроке.
| Ярлык привязки клавиш | Что оно делает |
|---|---|
| C-x C-s | Сохраняет файл |
| Alt + x | Открывает мини-приложение для ввода интерактивных команд |
| C-s | Поиск в прямом направлении |
| C-u Alt + x | Запуск другого экземпляра команды |
| C-x b | Перемещение между буферами |
| C-x 2 | Разделение на две горизонтальные раскладки |
| C-x 3 | Разделение на два вертикальных макета |
| C-x o | Перемещение на другую панель |
| C-x 1 | Полный обзор определенной панели |
А вам нравится иметь несколько терминальных сессий? Сообщите мне о своих мыслях в комментариях!


Комментарии (0)