<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Illia Olenchenko</title>
    <description>The latest articles on Forem by Illia Olenchenko (@icrosil).</description>
    <link>https://forem.com/icrosil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F197607%2F0fed959f-0dc6-45b4-8310-fbe3c7b56fb0.jpg</url>
      <title>Forem: Illia Olenchenko</title>
      <link>https://forem.com/icrosil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/icrosil"/>
    <language>en</language>
    <item>
      <title>YAT*SH - yet another terminal *sh setup</title>
      <dc:creator>Illia Olenchenko</dc:creator>
      <pubDate>Sat, 02 May 2020 15:40:04 +0000</pubDate>
      <link>https://forem.com/icrosil/yat-sh-yet-another-terminal-sh-setup-5glg</link>
      <guid>https://forem.com/icrosil/yat-sh-yet-another-terminal-sh-setup-5glg</guid>
      <description>&lt;p&gt;Terminal setup is a really first thing that gives you real dev powers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Once you get it right and comfortable for your workflow, you'll love what you do even more.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I remember on my first setups I've tried a lot of different things, I've tried to make my terminal perfect. It took so much of my time, I can't even imagine. Spotting yourself?&lt;/p&gt;

&lt;p&gt;After all, it was a great investment in my dev machine setup and in my opinion - most impactful. I'm trying to use new things once they come (sure you do that as well). And here I'd like to share my setup I'm happy with - didn't change for a while now - so you could play with all that on your machine as well!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So if you are looking for some quick setup or just for some toolset - you are in right place.&lt;br&gt;
By the end of this article we will have complete setup with lots of fine tools and ready to smash it terminal.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;P.S. Important note, that working on mac, made the most meaningful impact on me. So all the next notes are applying mostly to that OS, though with the latest terminal improvements on windows/ubuntu/whatever you should be able to set up something similar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outline - What's inside&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Terminal&lt;/li&gt;
&lt;li&gt;Shell&lt;/li&gt;
&lt;li&gt;Pure Prompt Theme&lt;/li&gt;
&lt;li&gt;Font&lt;/li&gt;
&lt;li&gt;Autojump&lt;/li&gt;
&lt;li&gt;Completion&lt;/li&gt;
&lt;li&gt;Syntax Highlighting&lt;/li&gt;
&lt;li&gt;Search back in history&lt;/li&gt;
&lt;li&gt;Howdoi&lt;/li&gt;
&lt;li&gt;Lazydocker&lt;/li&gt;
&lt;li&gt;Dive&lt;/li&gt;
&lt;li&gt;Alias&lt;/li&gt;
&lt;li&gt;Useful commands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A lot of things to cover, so let's get started.&lt;/p&gt;

&lt;h1&gt;
  
  
  Terminal
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frc30yer9cpk3zmm7b8j2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frc30yer9cpk3zmm7b8j2.png" alt="Hyper"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hyper / ITerm2
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://hyper.is/" rel="noopener noreferrer"&gt;Hyper&lt;/a&gt; is a rockstar here for me. One of the Zeit(Vercel) team products. No pressure on iterm2 users, it's handy and stable.&lt;/p&gt;

&lt;p&gt;Hyper was the first app I saw built with the electron. That was so powerful mindset changer so I've started using it. Style changes made with simple CSS changes 🤯. Plugins installed with similar to npm package manager - hpm. It's so easy to use I've stopped worrying about anything related to the terminal app itself.&lt;/p&gt;

&lt;p&gt;In any case, you prefer hyper or iterm2 - don't use default mac terminal, save your time.&lt;/p&gt;




&lt;h2&gt;
  
  
  IDE Terminal
&lt;/h2&gt;

&lt;p&gt;Also on my experience a lot of people are using the IDE terminal for running scripts, it is also fine if you like that way. Having code and runners in 1 place is handy.&lt;/p&gt;

&lt;p&gt;I've stopped using any terminal in IDE as I like to separate concerns even if it makes me go to another window.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So as a small summary to this section - do terminal things wherever it suits you. 99% of configuration comes from Shell and available in any up to date terminal.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Shell
&lt;/h1&gt;

&lt;p&gt;For the shell, I'm fan of &lt;a href="https://ohmyz.sh/" rel="noopener noreferrer"&gt;zsh&lt;/a&gt;. 'Oh my zsh' to be specific as the framework for managing configuration. Now it comes as default for mac so you don't need to waste your 5 minutes on this. Plenty of plugins, customizability is what you expect from the brilliant shell - zsh.&lt;/p&gt;

&lt;h1&gt;
  
  
  Plugins
&lt;/h1&gt;

&lt;p&gt;The true power that doesn't need a lot of responsibility from you.&lt;/p&gt;

&lt;p&gt;It is quite easy to install plugins for zsh usually, you just put the name of the plugin in &lt;em&gt;plugins&lt;/em&gt; section inside of your configuration file. Some plugins are not that easy to install but Readme usually covering all cases how can you make that work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Appearance
&lt;/h2&gt;

&lt;p&gt;Making terminal beautiful was really my first think of that ugly app that I had to use. It was a long way before I started to like the setup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3jmlf4na8j4zbk9kz25m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3jmlf4na8j4zbk9kz25m.png" alt="zshrc example"&gt;&lt;/a&gt;&lt;br&gt;
As all of the configurations placed in &lt;code&gt;~/.zshrc&lt;/code&gt; it is important you make it accessible for yourself.&lt;br&gt;
I'm splitting it into different sections divided by lines for easier determination for the next change. Usually, I'm adding all new things there manually so for me it is a good practice to keep that clean.&lt;/p&gt;
&lt;h3&gt;
  
  
  Theme
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frktpqslsl13k4z790chf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frktpqslsl13k4z790chf.png" alt="pure"&gt;&lt;/a&gt;&lt;br&gt;
There are themes that you can install already prebuilt in zsh. I didn't find "my theme" there until I met... &lt;code&gt;pure prompt&lt;/code&gt; 🌟 Definitely my winner here, minimal, with all needed information.&lt;/p&gt;

&lt;p&gt;Prompt gives lot of brilliant stuff of the box like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shows git branch and status ✅&lt;/li&gt;
&lt;li&gt;shows if your last command successful or not ✅&lt;/li&gt;
&lt;li&gt;shows the command execution time ✅&lt;/li&gt;
&lt;li&gt;shows current path ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All needed docs in their &lt;a href="https://github.com/sindresorhus/pure" rel="noopener noreferrer"&gt;github repo&lt;/a&gt;.&lt;/p&gt;



&lt;p&gt;Even untouched it is gorgeous. Though as they are saying, it &lt;em&gt;makes an excellent starting point for your own custom prompt.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've added to it 2 tweaks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Current time at the start of the line&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The time when a command started. Sometimes it is nice to have timestamp when the last command started.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Random emoji&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Never know what is waiting for you in the next tab.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And now it looks like this:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjmoxq9j4mq33ga68nro4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjmoxq9j4mq33ga68nro4.png" alt="Updated pure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the configuration I've used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# locale fixes&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;en_US.UTF-8
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;LC_CTYPE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;en_US.UTF-8

&lt;span class="nv"&gt;ZSH_THEME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;

autoload &lt;span class="nt"&gt;-U&lt;/span&gt; promptinit&lt;span class="p"&gt;;&lt;/span&gt; promptinit

&lt;span class="c"&gt;# optionally define some options&lt;/span&gt;
&lt;span class="nv"&gt;PURE_CMD_MAX_EXEC_TIME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10

prompt pure
&lt;span class="c"&gt;# customisation&lt;/span&gt;
&lt;span class="c"&gt;# icons&lt;/span&gt;
&lt;span class="nv"&gt;OUTLINED_TRIANGLE_PROMPT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'â–³'&lt;/span&gt;
&lt;span class="nv"&gt;FILLED_TRIANGLE_PROMPT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'â–²'&lt;/span&gt;
&lt;span class="nv"&gt;SMALL_ARROW_PROMPT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\U&lt;/span&gt;&lt;span class="s1"&gt;203A'&lt;/span&gt; &lt;span class="c"&gt;# small&lt;/span&gt;
&lt;span class="nv"&gt;BIG_ARROW_PROMPT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\U&lt;/span&gt;&lt;span class="s1"&gt;276F'&lt;/span&gt; &lt;span class="c"&gt;# big&lt;/span&gt;
&lt;span class="c"&gt;# time + emoji + triangle&lt;/span&gt;
&lt;span class="nv"&gt;PROMPT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'%F{white}%* $(random_emoji)  %(?.%F{magenta}$BIG_ARROW_PROMPT.%F{red}$BIG_ARROW_PROMPT)%f '&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are a bit more icons than my current setup uses, previously I've used &lt;em&gt;Outlined/Filled&lt;/em&gt; triangles combo. But now I'm switched to a standard arrow with emoji.&lt;/p&gt;

&lt;p&gt;To make it work - check you've added &lt;a href="https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/emoji" rel="noopener noreferrer"&gt;emoji plugin&lt;/a&gt; so &lt;code&gt;random_emoji&lt;/code&gt; function works. As an alternative, you could use single emoji with syntax like &lt;code&gt;$emoji[mouse_face]&lt;/code&gt;.&lt;/p&gt;




&lt;p&gt;As Michael suggested in the comment there is an outstanding prompt - &lt;a href="https://starship.rs/" rel="noopener noreferrer"&gt;starship&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It comes with a lot of defaults and really worth considering for your setup. It definitely wins on pure as there is an inbuilt way to configure displays around what's inside a directory.&lt;/p&gt;




&lt;p&gt;Just one more great theme - &lt;a href="https://github.com/romkatv/powerlevel10k" rel="noopener noreferrer"&gt;powerlevel10k&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Super configurable, you even can create &lt;code&gt;pure&lt;/code&gt; from it!&lt;/p&gt;

&lt;h3&gt;
  
  
  Font
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F70wfu661qo9yi998pvt4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F70wfu661qo9yi998pvt4.jpg" alt="font"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is important to have good looking font on any app you are using. More to this it should also support last features like ligatures. Hyper is supporting them through the plugin &lt;a href="https://github.com/tolbertam/hyper-font-ligatures" rel="noopener noreferrer"&gt;hyper-font-ligatures&lt;/a&gt; but the list of fonts they support isn't a long one.&lt;/p&gt;

&lt;p&gt;That solution works with a few workarounds (like WebGL disable on hyper v3) to a font like &lt;a href="https://github.com/tonsky/FiraCode" rel="noopener noreferrer"&gt;Fira Code&lt;/a&gt;. I've used it for a while but recently switched to more elegant in my opinion - &lt;a href="https://github.com/kiliman/operator-mono-lig" rel="noopener noreferrer"&gt;Operator Mono Lig&lt;/a&gt;. It is a standard operator mono but with the addition of ligatures.&lt;/p&gt;

&lt;p&gt;So for now my list of fonts looks as next array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;fontFamily&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;'Operator Mono Lig', 'Fira Code', 'Fira Code iScript', Menlo, Monaco, 'Courier New', monospace&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Tab layout
&lt;/h3&gt;

&lt;p&gt;Usually, my workflow needs 3 or 4 terminal screens simultaneously. To keep them tidy I'm splitting a window into squares with &lt;code&gt;CMD-D&lt;/code&gt; and &lt;code&gt;CMD-SHIFT-D&lt;/code&gt; commands. For one tab. Once you need another one you are going with a new tab and arranging it again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fat5n3updsp2kjfd1skfb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fat5n3updsp2kjfd1skfb.png" alt="Usual tab layout"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With iterm2 I've used layout presets, but that didn't give me that much of help. With Hyper you can use something like &lt;code&gt;hyperlayout&lt;/code&gt; if you want to start your layout in 1 command.&lt;/p&gt;

&lt;h2&gt;
  
  
  Productivity
&lt;/h2&gt;

&lt;h3&gt;
  
  
  j - &lt;a href="https://github.com/wting/autojump" rel="noopener noreferrer"&gt;autojump&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;THE MOST PRODUCTIVE PLUGIN YOU NEED.&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fautojump.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fautojump.gif" alt="autojump"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You visit folders, &lt;code&gt;j&lt;/code&gt; will recognize it and keep track where have you been. Once you put &lt;code&gt;j fold&lt;/code&gt; it will fuzzy-find the most relevant folder and instantly change your location.&lt;br&gt;
No more &lt;code&gt;../../../../&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It also adds extra commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;jc&lt;/code&gt; - Jump into Child directory from current&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;jo&lt;/code&gt; - Jump and Opens in finder instead of going there.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  right-arrow completion
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fright-arrow.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fright-arrow.gif" alt="right-arrow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ever had a command that you run 1 time per month?&lt;br&gt;
Remember that it starts with &lt;code&gt;ssh...&lt;/code&gt;?&lt;br&gt;
Alright, this one is for you. &lt;a href="https://github.com/zsh-users/zsh-autosuggestions" rel="noopener noreferrer"&gt;zsh-autosuggestions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It will add the last command that starts with your input to a command, with the right arrow you could expand it.&lt;/p&gt;
&lt;h3&gt;
  
  
  autocompletion
&lt;/h3&gt;

&lt;p&gt;A handful for some commands. I cannot say it helps a lot, but I do like yarn completion, docker.&lt;/p&gt;

&lt;p&gt;I'm using plugins &lt;code&gt;zsh-completions&lt;/code&gt;, &lt;code&gt;yarn-completion&lt;/code&gt;, &lt;code&gt;git flow completion&lt;/code&gt;. To install them it is usually enough to add it to the plugin section.&lt;/p&gt;

&lt;p&gt;Hit tab on the start of a needed command, that's it.&lt;/p&gt;
&lt;h3&gt;
  
  
  same directory
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fsame-directory.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fsame-directory.gif" alt="same-directory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/hharnisc/hypercwd" rel="noopener noreferrer"&gt;hypercwd&lt;/a&gt;&lt;br&gt;
The first plugin I've felt in love is the same directory on the new tab or split.&lt;br&gt;
In combination with &lt;code&gt;j&lt;/code&gt;, it's just so fast.&lt;br&gt;
There are plugins for zsh by itself but I'm happy with hyper plugin &lt;code&gt;hypercwd&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  syntax highlight
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmufeh8s3xfrcsx0063st.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmufeh8s3xfrcsx0063st.png" alt="highlight"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scientifically proven eyes identifying elements much faster if they have different colors. This principle used to help you categorize code as well. A good theme for your IDE or Editor would increase your efficiency significantly. Same works for a terminal even if you don't code inside of it. Let your eyes help you identify what is important on your screen.&lt;/p&gt;

&lt;p&gt;I'm using plugin &lt;code&gt;zsh-syntax-highlighting&lt;/code&gt;. And some defined I've grabbed from &lt;code&gt;hyper-snazzy&lt;/code&gt; colors to meet better contrast:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foregroundColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;backgroundColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;black&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;red&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#ff5c57&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;green&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#1CB88B&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;yellow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#FDB92C&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;blue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#57c7ff&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;magenta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#ff6ac1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cyan&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#9aedfe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;foregroundColor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;borderColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#222430&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;cursorColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;magenta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;cursorAccentColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;selectionColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rgba(151, 151, 155, 0.2)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;black&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;red&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;green&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;magenta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;cyan&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;white&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;white&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lightBlack&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#686868&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lightRed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;red&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lightGreen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;green&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lightYellow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lightBlue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lightMagenta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;magenta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lightCyan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;cyan&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;lightWhite&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;foregroundColor&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  corrections
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fcorrections.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fcorrections.gif" alt="corrections"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm making typos every day with my terminal, it's usual for me to type &lt;code&gt;ayrn&lt;/code&gt; or &lt;code&gt;got&lt;/code&gt;. Got bless corrections.&lt;/p&gt;

&lt;p&gt;Fortunately, we have in build command to save our fingers&lt;br&gt;
&lt;code&gt;setopt correct_all # autocorrect commands&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bam 💥&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This option is working with 90% but if you want to express yourself more... natural. - &lt;code&gt;f*ck&lt;/code&gt; is your choice.&lt;/p&gt;

&lt;p&gt;Run a typo command -&amp;gt; run &lt;code&gt;fuck&lt;/code&gt; -&amp;gt; it will rerun your previous command with the fix.&lt;/p&gt;
&lt;h3&gt;
  
  
  search back in history
&lt;/h3&gt;

&lt;p&gt;Ever had a command that you run only once, 2 years ago, pasted from the internet? Don't remember what was the command but starts with &lt;code&gt;ssh...&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;Wait. We already have &lt;code&gt;right-arrow&lt;/code&gt; completion why we need something different?&lt;/p&gt;

&lt;p&gt;&lt;code&gt;right-arrow&lt;/code&gt; works great if you start typing and want it to finish command for you, but what if you remember only the middle part of a command, or last?&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;CTRL-R&lt;/code&gt; should you trust. There is a built-in bash reverse-i-search which allows you to filter and find your previous command by inputting your search and &lt;code&gt;CTRL-R&lt;/code&gt; to show the previous match.&lt;/p&gt;

&lt;p&gt;One handy addition to that is the next bind&lt;br&gt;
&lt;code&gt;bindkey '^[[A' history-substring-search-up&lt;/code&gt;&lt;br&gt;
It allows you to do the same with typing part of a command and clicking up to show the previous match.&lt;br&gt;
A M A Z I N G.&lt;br&gt;
&lt;code&gt;bindkey '^[[B' history-substring-search-down&lt;/code&gt;&lt;br&gt;
for search down.&lt;/p&gt;
&lt;h3&gt;
  
  
  Howdoi
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fhowdoi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fhowdoi.gif" alt="howdoi"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do you remember the feature of google &lt;code&gt;I'm feeling lucky&lt;/code&gt; that gave you first found result, that should be more relevant?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gleitz/howdoi" rel="noopener noreferrer"&gt;This is exactly it but for code&lt;/a&gt;. It usually gives pretty correct answers to frequently asked questions. One caveat - you have to ask your questions as simpler as possible. On my experience, it is working much better if specifying language or a tool.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;howdoi stop all containers docker&lt;/li&gt;
&lt;li&gt;howdoi uppercase python&lt;/li&gt;
&lt;li&gt;howdoi copy directory bash&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Lazydocker
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Flazydocker.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Flazydocker.gif" alt="lazydocker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Getting to know each docker command is great if you are DevOps. Though for front devs especially that might be nontrivial. I've used to google major commands I needed for docker or docker-compose before I remembered a significant part of them.&lt;/p&gt;

&lt;p&gt;But then a friend gave me &lt;a href="https://github.com/jesseduffield/lazydocker" rel="noopener noreferrer"&gt;this link to a docker tool&lt;/a&gt;. And that changed a lot of how I started to work with docker. Small inline docker tool is good for day to day things. To me, it is much smoother than VScode docker plugin or kitematic.&lt;/p&gt;
&lt;h3&gt;
  
  
  Dive
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fdive.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ficrosil%2FYAT-SH%2Fraw%2Fmaster%2Fclips%2Fdive.gif" alt="dive"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/wagoodman/dive" rel="noopener noreferrer"&gt;Another tool for docker&lt;/a&gt;, but more specifically to see what's inside and how layers built. Way back when I was investigating why my image with nodejs API was too big that tool helped me see that I've installed node modules twice, in my folder and yarn global cache.&lt;/p&gt;
&lt;h3&gt;
  
  
  Alias
&lt;/h3&gt;

&lt;p&gt;Aliases are just shortcuts for long commands.&lt;br&gt;
A brilliant idea of a shortcut born in your head? That's the time you need to put it in alias and start saving your 5 sec times in the future.&lt;/p&gt;

&lt;p&gt;As a tip for aliases, once you are tired to type a few words for git/docker/npm/bash - it's time to make an alias. Be lazy. Be smart.&lt;/p&gt;

&lt;p&gt;Adding aliases is that easy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open sh file configuration with your text editor like &lt;code&gt;code ~/.zshrc&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;find a place for new alias within your alias section&lt;/li&gt;
&lt;li&gt;name it - &lt;code&gt;alias NAME="COMMAND"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;reload your terminal with &lt;code&gt;source ~/.zshrc&lt;/code&gt; or opening new tab&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is my list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# git-flow&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;git_cbr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'git symbolic-ref --short -q HEAD | cut -f2 -d"/"'&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;gffp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'gfl feature publish $(git_cbr); ghpr'&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;gffs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'gfl feature start'&lt;/span&gt;
&lt;span class="c"&gt;# git&lt;/span&gt;
&lt;span class="c"&gt;# I'm using safari by default but you can change this to chrome&lt;/span&gt;
&lt;span class="c"&gt;# This alias is usefully opens new PR in browser on publishing&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;ghpr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'/usr/bin/open -a Safari "https://github.com/icrosil/$(pwd | xargs basename)/compare/feature/$(git_cbr)?expand=1"'&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;gbruu&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"git branch --unset-upstream"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;gdfsh&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"git diff --shortstat develop HEAD"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;gcp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"git cherry-pick"&lt;/span&gt;
&lt;span class="c"&gt;# docker&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;dkc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"docker-compose"&lt;/span&gt;
&lt;span class="c"&gt;# yarn&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;y&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yi&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn install"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;ya&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn add"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yad&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn add --dev"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yga&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn global add"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn run"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yre&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn run example"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;ys&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn start"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn install &amp;amp;&amp;amp; yarn start"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn test"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn install &amp;amp;&amp;amp; yarn test"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn link"&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;yu&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"yarn unlink"&lt;/span&gt;
&lt;span class="c"&gt;# chrome&lt;/span&gt;
&lt;span class="nb"&gt;alias &lt;/span&gt;purge-idb&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"rm -rf &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/Library/Application&lt;/span&gt;&lt;span class="se"&gt;\ &lt;/span&gt;&lt;span class="s2"&gt;Support/Google/Chrome/Default/IndexedDB/*"&lt;/span&gt;
&lt;span class="c"&gt;# functions&lt;/span&gt;
&lt;span class="k"&gt;function &lt;/span&gt;take&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most useful from the list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;gffp&lt;/code&gt; - publish feature and open in browser&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yr&lt;/code&gt; - run npm script in a directory. Yes you can run script with just yarn command, but with this shortcut I'm actually getting autocomplete for available commands in repo!&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dkc&lt;/code&gt; - just can't do docker compose without it&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;take&lt;/code&gt; - mkdir and cd into&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;...&lt;/code&gt; - go up 2 level, &lt;code&gt;....&lt;/code&gt; - 3 levels and so on&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd +2&lt;/code&gt; - go up 2 dirs &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Extra useful commands
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;lsof -i :port&lt;/code&gt; - check if port occupied. Handy to kill some process blocking your app.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cat index.js&lt;/code&gt; - log a file to a console. Especially helpful for small files that &lt;code&gt;should have one line of code you need&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;some_command | grep text&lt;/code&gt; - will show lines where text found. When dealing with a lot of logs neat command.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;code ~/.zshrc&lt;/code&gt; - open file in vs code editor. To enable this thing you need to follow &lt;a href="https://code.visualstudio.com/docs/setup/mac" rel="noopener noreferrer"&gt;these steps&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rm -rf ./node_modules&lt;/code&gt; - when nothing else helps.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill process_id&lt;/code&gt; - kill hang process&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill -9 process_id&lt;/code&gt; - terminator mode&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kill -9 $(ps aux | grep 'text' | awk '{print $2}')&lt;/code&gt; - finding process and kills it, worth to put in alias though&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;touch file.txt&lt;/code&gt; - creates file in a command line&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mkdir dir_name&lt;/code&gt; - creates a directory&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>zsh</category>
      <category>terminal</category>
      <category>productivity</category>
      <category>mac</category>
    </item>
  </channel>
</rss>
