<?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>DEV Community: Okza Pradhana</title>
    <description>The latest articles on DEV Community by Okza Pradhana (@okzapradhana).</description>
    <link>https://dev.to/okzapradhana</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%2F933047%2Fe3ad5b25-d22e-450c-a95b-8bdf6b33e923.jpeg</url>
      <title>DEV Community: Okza Pradhana</title>
      <link>https://dev.to/okzapradhana</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/okzapradhana"/>
    <language>en</language>
    <item>
      <title>Customizing Your Own ZSH Prompt (without using OhMyZSH)</title>
      <dc:creator>Okza Pradhana</dc:creator>
      <pubDate>Tue, 27 Sep 2022 10:28:09 +0000</pubDate>
      <link>https://dev.to/okzapradhana/customizing-your-own-zsh-prompt-2jma</link>
      <guid>https://dev.to/okzapradhana/customizing-your-own-zsh-prompt-2jma</guid>
      <description>&lt;p&gt;If you are using MacBook with macOS Catalina or newer, the terminal will use ZSH as default instead of Bash. So that it will look like this (more or less)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i1_D8ZnK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4cf3su1nrvctrhndarb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i1_D8ZnK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4cf3su1nrvctrhndarb4.png" alt="Default ZSH Prompt" width="880" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine working all day on terminal with single color only -- personally I would prefer to make my terminal more beautiful with adding colors on it plus having information about my current git branch.&lt;/p&gt;

&lt;p&gt;During my journey of learning about dbt, I found an interesting forum's &lt;a href="https://discourse.getdbt.com/t/how-we-set-up-our-computers-for-working-on-dbt-projects/243"&gt;post&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;As a new user in MacOS env, I was introduced to &lt;a href="http://iterm2.com"&gt;Iterm2&lt;/a&gt; and we are able to custom our zsh prompt. Hence I would like to share setup of mine and how to do the setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  How ?
&lt;/h2&gt;

&lt;p&gt;To change the UI prompt, you just need to update your &lt;code&gt;~/.zshrc&lt;/code&gt; with updating &lt;code&gt;PS1&lt;/code&gt; value and set option for &lt;code&gt;PROMPT_SUBST&lt;/code&gt;. Here's mine:&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="nv"&gt;COLOR_DEFAULT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[0m'&lt;/span&gt;
&lt;span class="nv"&gt;COLOR_TIME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[38;5;43m'&lt;/span&gt;
&lt;span class="nv"&gt;COLOR_USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[38;5;105m'&lt;/span&gt;
&lt;span class="nv"&gt;COLOR_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[38;5;105m'&lt;/span&gt;
&lt;span class="nv"&gt;COLOR_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[38;5;38m'&lt;/span&gt;
&lt;span class="nv"&gt;COLOR_GIT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;$'&lt;/span&gt;&lt;span class="se"&gt;\e&lt;/span&gt;&lt;span class="s1"&gt;[38;5;151m'&lt;/span&gt;

setopt PROMPT_SUBST
&lt;span class="nv"&gt;PS1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'%{${COLOR_TIME}%}%* %{${COLOR_USER}%}%n@%{${COLOR_HOST}%}%m %{${COLOR_DIR}%}%~ %{${COLOR_GIT}%}$(__git_ps1 "(%s)") %{${COLOR_DEFAULT}%}\$ '&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The final look will be like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--19wZLIdd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kjzwjoowfcuar3v79dus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--19wZLIdd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kjzwjoowfcuar3v79dus.png" alt="Customized ZSH Prompt if the dir is not git repo" width="880" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QnFpEln_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kjeu5uqjqwa5v3ttte1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QnFpEln_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kjeu5uqjqwa5v3ttte1z.png" alt="Customized ZSH Prompt if the dir is a git repo" width="880" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To understand what &lt;code&gt;%*&lt;/code&gt;, &lt;code&gt;%~&lt;/code&gt; and other zsh prompt expression denotes. I suggest you to refer &lt;a href="https://zsh.sourceforge.io/Doc/Release/Prompt-Expansion.html#SEC59"&gt;this&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;For list of colors refer to &lt;a href="https://en.wikipedia.org/wiki/ANSI_escape_code"&gt;ANSI escape code colors&lt;/a&gt;. Use the 8-bit one.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Possible Issues
&lt;/h2&gt;

&lt;p&gt;If you are having issue with unusual behavior on tab autocompletion, make sure you have escape by &lt;code&gt;%{&lt;/code&gt; &lt;code&gt;%}&lt;/code&gt; between expression that changes color or boldness of the text. I highly suggest you to refer to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://unix.stackexchange.com/questions/85058/zsh-adds-tab-character-when-autocompleting?_gl=1*w0m5xs*_ga*NzY0NDk3MDEzLjE2NjQxNjIwNjM.*_ga_WCZ03SZFCQ*MTY2NDE5MzIyNS43LjEuMTY2NDE5Mzk3MS4wLjAuMA.."&gt;ZSH Add More Tab when Autocompleting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/11916064/zsh-tab-completion-duplicating-command-name"&gt;ZSH Duplicating Command Name when Autocompleting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://stackoverflow.com/questions/28799198/zsh-inserts-extra-spaces-when-performing-searches-and-completion"&gt;ZSH Add Extra Spaces when Autocompleting&lt;/a&gt; (similar to first link)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>zsh</category>
      <category>terminal</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
