Дав­нень­ко у нас не было колонок глав­реда! А все почему? Все потому, что глав­ред этот вот уже вто­рой месяц собира­ется написать что‑нибудь умное про web3, но все никак не соберет­ся с мыс­лями. Зато вмес­то это­го мы сегод­ня погово­рим о том, как сде­лать жизнь в кон­соли удоб­нее и веселее!
 

Лихие прыжки

Пер­вым эта­пом рефор­мации тер­минала для меня была вов­се не уста­нов­ка какой‑то прог­раммы, а ее уда­ление. Я отка­зал­ся от популяр­ного сре­ди маково­дов iTerm2 в поль­зу стан­дар­тно­го при­ложе­ния Terminal. Почему? Дело в том, что в какой‑то момент в Apple его кру­то переде­лали, и он с тех пор не толь­ко не усту­пает «Айтер­му», но кое в чем пре­вос­ходит его.

Важ­ным откры­тием, нап­ример, для меня были шот­каты Cmd-вверх и Cmd-вниз, которые поз­воля­ют ска­кать по вве­ден­ным коман­дам. А еще мож­но нажать Cmd-L, что­бы сте­реть вывод пос­ледней коман­ды. И это вов­се не ана­лог юник­совой коман­ды clear, которая прос­то выводит 26 перено­сов стро­ки и ничего, по сути, не сти­рает. Нет, вывод, если он мешал, исче­зает бес­след­но.

Мо­жет, все это мелочи, но они момен­таль­но вош­ли в при­выч­ку и сде­лали жизнь ком­фор­тнее. Кста­ти, работа­ют эти удобс­тва незави­симо от текуще­го интер­пре­тато­ра — мож­но, к при­меру, ска­кать по коман­дам внут­ри Python REPL.

Еще очень удоб­но для раз­ных нужд нас­тро­ить про­фили тер­минала с раз­ными стар­товыми коман­дами. Нап­ример, ssh ты@твой_сервер или python3. А заод­но — пок­расить фон в раз­ный цвет. И даже задать шот­каты на откры­тие таких тер­миналов — через сис­темные нас­трой­ки или через FastScripts.

info

Соз­дание нового шот­ката средс­тва­ми macOS работа­ет так. Заходи в System Preferences → Keyboard → Shortcuts → App Shortcuts, даль­ше добавь при­ложе­ние (Terminal) и задай пункт меню в духе Shell->New Window->SSH (пря­мо так — со стрел­ками), а нап­ротив — жела­емый шот­кат.

Не знаю, есть ли для 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.fish (или .bashrc, если ты еще не в нашем рыб­ном кла­не). Ну и конеч­но, потом мож­но от души покопать­ся в нас­трой­ках и смас­терить себе самое кра­сивое приг­лашение на све­те.

 

Вечный кайф

Ка­кая глав­ная проб­лема при работе по SSH? Пра­виль­но, «сло­ман­ные тру­бы»! То есть сооб­щения broken pipe, которые ты можешь уви­деть, если слиш­ком дол­го будешь отвле­кать­ся на важ­ные дела вро­де чте­ния докумен­тации или при­готов­ления кофе.

Ле­чат это по‑раз­ному. Мож­но, нап­ример, исполь­зовать олдо­вый screen, что­бы пос­ле раз­рыва соеди­нения хотя бы иметь воз­можность вер­нуть­ся к тому, что ты делал. Но кон­нектить­ся при­дет­ся заново — это­го ник­то не отме­нял.

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

Единс­твен­ная проб­лема с Mosh в том, что в боль­шинс­тве эму­лято­ров тер­минала перес­танет работать прок­рутка тек­ста колесом мыши (оно нач­нет вмес­то это­го прок­ручивать коман­ды). Раз­дра­жает это прос­то неимо­вер­но. К тому же ресайз тер­минала обыч­но при­водит к появ­лению в нем мусора.

Я уже было подумы­вал вер­нуть­ся к iTerm2, который под­держи­вает Mosh чуть луч­ше — в час­тнос­ти, скролл там работа­ет. Но тут нат­кнул­ся на замеча­тель­ную аль­тер­нативу Mosh — Eternal Terminal. В целом работа­ет он точ­но так же, прос­то с ним прок­рутка и ресайз окна не вызыва­ют проб­лем. Да и наз­вание куда более воз­вышен­ное!

info

Ког­да я при­бежал в редак­цион­ный чат рас­ска­зывать о сво­ей наход­ке, автор статьи «Ма­гия кон­соли 2» немед­ленно ука­зал мне на то, что уже писал об Eternal Terminal и давал мне почитать. Что ж! Быва­ет, что хорошую вещь нуж­но най­ти нес­коль­ко раз.

Кста­ти, если бы я час­то работал с SSH на ходу, чаша весов мог­ла бы кач­нуть­ся и в сто­рону Mosh. На iOS есть рос­кошный эму­лятор тер­минала под наз­вани­ем Blink, который под­держи­вает Mosh. Его авто­ра уже про­сили добавить под­дер­жку и Eternal Terminal тоже (при­чем в тред при­шел и сам раз­работ­чик ET и пред­ложил помощь), но тот уже который год отма­хива­ется от этой идеи.

 

На прощание

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии