Содержание статьи
Лихие прыжки
Первым этапом реформации терминала для меня была вовсе не установка какой‑то программы, а ее удаление. Я отказался от популярного среди маководов iTerm2 в пользу стандартного приложения Terminal. Почему? Дело в том, что в какой‑то момент в Apple его круто переделали, и он с тех пор не только не уступает «Айтерму», но кое в чем превосходит его.
Важным открытием, например, для меня были шоткаты Cmd-вверх и Cmd-вниз, которые позволяют скакать по введенным командам. А еще можно нажать Cmd-L, чтобы стереть вывод последней команды. И это вовсе не аналог юниксовой команды clear
, которая просто выводит 26 переносов строки и ничего, по сути, не стирает. Нет, вывод, если он мешал, исчезает бесследно.
Может, все это мелочи, но они моментально вошли в привычку и сделали жизнь комфортнее. Кстати, работают эти удобства независимо от текущего интерпретатора — можно, к примеру, скакать по командам внутри Python REPL.
Еще очень удобно для разных нужд настроить профили терминала с разными стартовыми командами. Например, ssh
или python3
. А заодно — покрасить фон в разный цвет. И даже задать шоткаты на открытие таких терминалов — через системные настройки или через FastScripts.
info
Создание нового шотката средствами macOS работает так. Заходи в System Preferences → Keyboard → Shortcuts → App Shortcuts, дальше добавь приложение (Terminal) и задай пункт меню в духе Shell->
(прямо так — со стрелками), а напротив — желаемый шоткат.
Не знаю, есть ли для Linux эмулятор терминала, где все эти функции скопировали (или придумали сами), но линуксоидам рекомендую поискать!
Полезная рыба
Когда‑то давным‑давно, а точнее — в 2018 году, я написал заметку в рубрику WWW, где рассказал о новаторском командном интерпретаторе под названием Fish.
Главная его фишка — это автодополнение: нажимаешь Tab, и можешь легко и удобно выбрать папку или файл, если вариантов несколько. Да, Zsh тоже так умеет, но там нужно дважды нажимать Tab, чтобы появился курсор, а в Fish достаточно нажать стрелку «вниз». Облегчение опять же небольшое, но точно так же входит в привычку и повышает комфорт.
А еще в Fish можно нажимать Tab после того, как ты введешь какую‑нибудь команду, чтобы увидеть полный список ее параметров с краткими пояснениями. Эдакий встроенный man
, из которого можно сразу выбирать ключи.
Переходя на Fish, нужно помнить об одном — в отличие от Zsh, он не поддерживает синтаксис Bash! Ты можешь либо изучить отличия и учитывать их в своих однострочниках, либо просто предварять их вызовом Bash.
Звездолет
Единственной причиной, по которой я сам не стал переходить на Fish в упомянутом 2018 году, была его (а вовсе не моя!) тормознутость. Не то чтобы он совсем уж медленно работал, но как‑то неуверенно вихлялся в ответ на нажатия клавиш.
Прошли годы, и эта проблема самоустранилась волшебным образом — то ли Fish оптимизировали, то ли новый компьютер справляется с ним лучше. Но нет предела совершенству! Для любителей суперскоростных терминалов есть новомодная присадка под названием Starship.
Starship — это не эмулятор терминала и не командный интерпретатор. Это всего лишь «промпт», то есть программа, которая рисует приглашение к вводу, а также принимает и отображает вводимые символы. Поверь, даже тут возможно улучшение!
Starship написан на Rust, быстр и добавляет к терминалу несколько приятных визуальных фич — например, красит приглашение в красный, если прошлая команда завершилась с ошибкой. А еще он выводит над приглашением красивые информационные строчки, если ты работаешь с Git, виртуальным окружением Python, AWS и многими другими популярными программами.
Для установки Starship нужно добавить всего одну строку в config.
(или .
, если ты еще не в нашем рыбном клане). Ну и конечно, потом можно от души покопаться в настройках и смастерить себе самое красивое приглашение на свете.
Вечный кайф
Какая главная проблема при работе по SSH? Правильно, «сломанные трубы»! То есть сообщения broken
, которые ты можешь увидеть, если слишком долго будешь отвлекаться на важные дела вроде чтения документации или приготовления кофе.
Лечат это по‑разному. Можно, например, использовать олдовый screen
, чтобы после разрыва соединения хотя бы иметь возможность вернуться к тому, что ты делал. Но коннектиться придется заново — этого никто не отменял.
Я пробовал ставить Mosh — программу, которая работает на сервере и держит открытым собственный порт, чтобы ты мог подключиться при помощи клиента. Сессии Mosh железобетонны и могут длиться сутками!
Единственная проблема с Mosh в том, что в большинстве эмуляторов терминала перестанет работать прокрутка текста колесом мыши (оно начнет вместо этого прокручивать команды). Раздражает это просто неимоверно. К тому же ресайз терминала обычно приводит к появлению в нем мусора.
Я уже было подумывал вернуться к iTerm2, который поддерживает Mosh чуть лучше — в частности, скролл там работает. Но тут наткнулся на замечательную альтернативу Mosh — Eternal Terminal. В целом работает он точно так же, просто с ним прокрутка и ресайз окна не вызывают проблем. Да и название куда более возвышенное!
info
Когда я прибежал в редакционный чат рассказывать о своей находке, автор статьи «Магия консоли 2» немедленно указал мне на то, что уже писал об Eternal Terminal и давал мне почитать. Что ж! Бывает, что хорошую вещь нужно найти несколько раз.
Кстати, если бы я часто работал с SSH на ходу, чаша весов могла бы качнуться и в сторону Mosh. На iOS есть роскошный эмулятор терминала под названием Blink, который поддерживает Mosh. Его автора уже просили добавить поддержку и Eternal Terminal тоже (причем в тред пришел и сам разработчик ET и предложил помощь), но тот уже который год отмахивается от этой идеи.
На прощание
На этом мы сегодня закончим, а напоследок все же расскажу, что стряслось с колонкой про web3. Я уже дважды набрасывал ее план, но начать писать мешало простое соображение: кроме критики, там ничего не будет, а критиковать криптобратию — жутко неблагодарное занятие. Тяжело зависимого от крипты человека не переубедить, а остальных и переубеждать не нужно, у них и своего скепсиса — девать некуда!