DEV Community

Cover image for [PT-BR] O que é o Oh My Zsh e como ele pode melhorar a sua experiência com o Windows Terminal
Erick Garcia Godoy
Erick Garcia Godoy

Posted on • Updated on

[PT-BR] O que é o Oh My Zsh e como ele pode melhorar a sua experiência com o Windows Terminal

Windows terminal

Se você quer ter um terminal mais bonito e personalizado no seu Windows, este guia é para você. Neste guia, você vai aprender a:

  1. Instalar o Windows Terminal, um aplicativo que permite usar vários terminais em uma única janela
  2. Instalar o WSL (Windows Subsystem for Linux), um recurso que permite executar um ambiente Linux dentro do Windows
  3. Instalar o Zsh, um shell interativo que oferece recursos avançados como autocompletar, corretor ortográfico e temas
  4. Instalar o Oh My Zsh, um framework que facilita a configuração e o gerenciamento do Zsh
  5. Escolher e aplicar um tema do Oh My Zsh que combine com o seu estilo

Com esses passos, você vai transformar o seu terminal em uma ferramenta poderosa e divertida de usar. Vamos começar?

Status e testes

CI Build Status GitHub forks GitHub stars GitHub issues Infrastructure Tests

Índice

Requisitos mínimos 🛠️

Para começar, você precisará baixar e instalar o Visual Studio Code, um editor de código-fonte popular e gratuito. Você pode fazer isso acessando o site oficial do VS Code e seguindo as instruções de instalação para o seu sistema operacional.

Visual Studio Code + Remote WSL 💻

Após instalar o VS Code, instale também um plugin chamado Remote - WSL. Ele servirá para abrir e editar arquivos do Linux de forma visual, sem precisar utilizar nano, vim e afins. O atalho para salvar arquivos que fora editados é Ctrl + S

Baixe e instale a fonte FiraCode Light TTF 🌟

Antes de tudo, instale o pacote de fontes Fira Code. Ela trará alguns efeitos bem legais ao utilizar símbolos no código ou no terminal. Você pode ver mais detalhes do projeto no perfil deles no GitHub - Fira Code.

Habilite o Hyper-V e o WSL via Powershell Admin ⚙️

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Observação: Em algumas máquinas, pode ser necessário habilitar a virtualização na BIOS também.

Instale uma Distro Linux 🐧

Você pode escolher e instalar uma distribuição Linux de sua preferência. Clique aqui para baixar o Ubuntu.

Instale o Windows Terminal 🪟

O Windows Terminal é uma ferramenta poderosa para gerenciar terminais no Windows.

Atualizando o Kernel Linux no Windows 🔄

Atualize o Kernel do Linux no Windows, baixe o pacote de atualização do kernel do Linux para o WSL 2 para computadores x64.

Migrar a distro Existente para WSL 2 (Utilizará o Kernel nativo do Linux no Windows) 🚀

Após instalar a atualização, execute o PowerShell como Administrador e digite o seguinte comando para listar suas distribuições Linux instaladas e verificar qual versão do WSL estão usando:

wsl -l -v

Agora, migre sua distribuição Linux existente para o WSL 2 executando o comando:

wsl --set-version <distro name> 2

Substitua <distro name> pelo nome da sua distribuição, sem os sinais <>. A migração para o WSL 2 começará e, ao terminar, você poderá usar o Linux no Windows 10 vezes mais rápido do que com a versão WSL 1 anterior. 🚀

Utilizando o Linux 🐧

Com todo o ambiente instalado e configurado, você já pode abrir o Windows Terminal e iniciar sua distribuição Linux preferida em novas abas.

Execute o script de instalação do ZSH 🖥️

bash -c "$(curl -fsSL https://raw.githubusercontent.com/ErickRock/oh-my-zsh-on-windows-terminal/main/zsh-install.sh)"

Após a execução do comando, feche o terminal e abra-o novamente.

Ao reiniciar, escolha a opção 2 e pressione Enter. Feche o terminal novamente e abra-o para continuar com os comandos a seguir.

Execute o script de instalação do ZSH Tools + Plugins 🛠️

bash -c "$(curl -fsSL https://raw.githubusercontent.com/ErickRock/oh-my-zsh-on-windows-terminal/main/tools-zsh-install.sh)" -y

Na tela seguinte, digite exit e pressione Enter para permitir que o script continue.

Tema Spaceship 🌌

spaceship →~ prompt
🚀⭐ Spaceship ZSH

Zsh prompt for Astronauts.

NPM Version CI Status Zsh Version Spaceship ZSH Twitter Donate


Website |
Instalando |
Opções |
API

Feito com ❤︎ por
Denys Dovhan e
colaboradores

Instalando 🚀

sudo git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt"
sudo ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

Ativando o tema 🌈

Digite code ~/.zshrc e pressione Enter para abrir o VS Code e editar o arquivo. Altere o campo ZSH_THEME="fino" para ZSH_THEME="spaceship" e salve. Pronto, você acabou de mudar o tema. 🌟

Editando o arquivo .zshrc

Plugins inclusos 🧩

Esses são os plugins inclusos, e abaixo explico como cada um deles funciona:

  • zdharma/fast-syntax-highlighting: Adiciona syntax highlighting na hora da escrita de comandos, facilitando principalmente o reconhecimento de comandos digitados incorretamente. 🎨
  • zsh-users/zsh-autosuggestions: Sugere comandos baseados no histórico de execução enquanto você digita. 💡
  • zsh-users/zsh-completions: Adiciona milhares de completions para ferramentas comuns como Yarn, Homebrew, NVM, Node, etc. Você só precisa apertar TAB para completar comandos. 🚀

Dicas 💡

Você pode acessar toda a estrutura de arquivos da distribuição Linux instalada no caminho \\wsl$, da mesma forma que acessa um servidor, pasta, etc. É possível deixar um mapeamento de rede deste caminho, caso prefira.

Changelog

[2.0.23] - 2023-09-06

Corrigido 🐛

  • Erro de ortografia na palavra "Pluguins", que agora está escrita corretamente como "Plugins" .
  • Erro de sintaxe no script de instalação do ZSH Tools + Plugins, que agora usa o operador && em vez de || para garantir a execução sequencial dos comandos .
  • Bug que impedia o início do ZSH ao fim do script de instalação, que agora usa o comando exec zsh para substituir o shell atual pelo ZSH .

Melhorado 🚀

  • Processo de integração contínua (CI) no GitHub e no Azure, que agora usa o apt-fast para acelerar a instalação de pacotes no Linux .
  • Tema Spaceship para usar o novo projeto zdharma-continuum zinit, que é um fork do antigo projeto zdharma zinit que foi descontinuado .

Adicionado ➕

  • Temas padrões do Oh My Zsh, que são temas simples e elegantes para o ZSH. Você pode escolher entre os temas robbyrussell, agnoster, bira, candy, etc. .

¹: v.2.0.23 Fixed #8, #9
²: Sintaxe || corrigida para &&
³: Inicia o zsh ao fim do script
⁴: implementado apt-fast
⁵: Update to use new zdharma-continuum zinit project
⁶: 🎨 Adicionado Temas Padrões

Créditos e links de referência:

Top comments (29)

Collapse
 
ninjaazul profile image
Erick De Freitas Gonçalves

é aquilo nem todo herói veste capa

Collapse
 
erickrock profile image
Erick Garcia Godoy

O artigo foi atualizado recentemente, e já conta com 2 scripts que automatizam o processo dentro da distro Linux, pretendo em breve unificar em apenas 1 script, e ainda abranger o setup inicial de ativar o Hyper-V e o WSL.

Deixei varias issues abertas para facilitar a controbuição de quem puder ajudar!

Collapse
 
eaeniko profile image
Nikolai Cinotti

Cara, eu to com um problema que as algumas cores nao mudam nem ferrando, por exemplo esse verde marca texto de fundo de algumas pastas não sae, não consigo mudar a cor e nem tirar, é claramente visivel que é ruim de ver. Poder me ajudar?
Me parece que só fica assim em pastas do windows, mas é meio bizarro. (Os tons de verde é pq estou com o tema Dracula, mas sem ele o verde fica ainda pior)

Collapse
 
eaeniko profile image
Nikolai Cinotti

Link da imagem caso nao apareca abaixo: i.prntscr.com/aIgBEsJcQ1KF2OCRZlby...

Collapse
 
guipatriota profile image
Guilherme D. Patriota • Edited

Olá, Nikolai. Sugiro que você veja o seguinte link: askubuntu.com/questions/466198/how...

Simplificando, insira a seguinte linha no seu ~/.bashrc (antes de chamar exec zsh) ou no ~/.zshrc (antes da instalação do zinit e do spaceship-prompter, se você tiver ):

LS_COLORS=$LS_COLORS:'tw=30;45:ow=30:44' ; export LS_COLORS

Isso já deve resolver.
Explicação:
LS_COLORS contém todos os padrões de cores que serão usados em todo o terminal. Os números vão de 0 a 107, sendo de 0 a 8 os formatos, 40 a 47 e 100 a 107 as cores de fundo e de 30 a 97 as cores das letras.

tw são as pastas do windows que seu usuário não tem permissão de acesso e ow são as pastas que tem. di são as pastas do wsl.

Veja no link as combinações de cores de fundo e letra que mais te agradarem e faça a alteração na variável LS_COLORS. Sugiro não apenas adicionar os dados, mas alterar ela completamente como abaixo:

printf -v LS_COLORS '%s' \
'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01' \
':mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;45:ow=30;44:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31' \
':.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31' \
':
.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.dz=01;31' \
':.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31' \
':.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31' \
':
.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31' \
':.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31' \
':
.esd=01;31:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35' \
':.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35' \
':.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35' \
':
.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35' \
':.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35' \
':
.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35' \
':.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35' \
':
.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36' \
':.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36' \
':
.spx=00;36:*.xspf=00;36:'

export LS_COLORS

Deixei em anexo (dev-to-uploads.s3.amazonaws.com/up...) um print do antes e depois desta config. Espero que ajude...

Collapse
 
erickrock profile image
Erick Garcia Godoy

Cara, perdão pela demora, talvez nem esteja mais precisando de apoio.
Mas tive este problema também, a maioria dos problemas diferentes que tive, normalmente consegui resolver utilizando os terminais tudo via Windows Terminal e com uma das variações da font "FiraCode" ou "Cascadia Code Mono".

Collapse
 
yagomaia profile image
Yago

Muito bom Erick !! Ficou melhor que o cmder que estava utilizando.. Gostaria de tirar uma dúvida, como você fez para o zsh reconhecer as variáveis de ambientes configuradas no path? Tem alguma forma se não inseri-las todas no .zshrc ?

Collapse
 
erickrock profile image
Erick Garcia Godoy

Vlw!

Está se referindo a literalmente utilizar os path como configuração de algum software ou voce quer rodar algo instalado no Windows apenas?

Collapse
 
d3lmaschio profile image
Matheus Delmaschio

Valeu, ficou show de bola.

Collapse
 
jeanfuchs profile image
Jean Carlos Fuchs Cordeiro

Show! Encontrei dificuldade no passo de tornar o terminal linux padrão dentro do Windows Terminal no lugar do PowerShell, mas foi o único tutorial que segui a risca e consegui fazer funcionar tudo direitinho.

Collapse
 
geovanek profile image
Geovane Krüger • Edited

Estranho, pra mim continuava abrindo o bash como padrão no Windows Terminal.
Tive que alterar manualmente nas configurações do windows terminal

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
erickrock profile image
Erick Garcia Godoy

Vlw pelo feedback mano! Desculpa a demora em responder kkk

Collapse
 
g4brielpeixoto profile image
Gabriel Peixoto

Muito fera, obrigado pelo conhecimento compartilhado! Aqui no meu caso toda vez que abro o terminal recebebo isso: "/home/gabriel/.zshrc:123: command not found: zinit
/home/gabriel/.zshrc:145: command not found: zinit". Poderia me ajudar como resolver? Segui todo o passo a passo

Collapse
 
rruffer profile image
Rodolfo Ruffer • Edited

Fala Gabriel.

Eu coloquei essas linhas antes da linha que dá o erro e funcionou (arquivo .zshrc):

ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
#mkdir -p "$(dirname $ZINIT_HOME)"
#git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
source "${ZINIT_HOME}/zinit.zsh"
Enter fullscreen mode Exit fullscreen mode

As duas linhas do meio eu comentei prq toda vez que eu abro o terminal ele tentava substituir a pasta já existente e ficava aparecendo um erro. mas pode ser que no primeiro momento vc tenha que habilitar as duas.

Fonte: github.com/zdharma-continuum/zinit...

Collapse
 
g4brielpeixoto profile image
Gabriel Peixoto

Muito obrigado Rodolfo! Deu certo aqui.

Collapse
 
michellelira profile image
Michelle Lira (she/her)

Este tutorial definitivamente me salvou. Super obrigada!

Collapse
 
ruandev profile image
Ruan Victor

Show demais!!! Muito obrigado! Apenas a parte da configuração que não totalmente certo aqui, creio que por causa dos guid mas tirando isso funcionou tudo de boa

Collapse
 
naygo profile image
Nayla Gomes

Ficou muito show aqui, obrigada :D
Só não estou conseguindo usar os comando do node, tenho que instalar ele pelo terminal para que funcione? E assim para outros demais pacotes?

Collapse
 
erickrock profile image
Erick Garcia Godoy • Edited

De nada poxa! Fico feliz que gostou.
Sim, o bash ou o zsh vão buscar os comandos e alias todos daquele sistema linux, se o node estiver no Windows apenas não vai funcionar.
É possível realizar alguns comandos Windows diretamente pelo linux, mas é necessário criar um alias no linux que invoque comandos Windows. Me manda msg no twitter pra me lembrar de como fazer isso, posso ajudar.

Collapse
 
viniciusbe profile image
Vinícius Bernardes

Muito bom, deu tudo certo aqui !!

Collapse
 
danilobrun profile image
danilobrun

o comando -> code não funciona dentro do meu wsl 2 após instalar o zsh.
alguém para dar um help?

Collapse
 
joaoflach profile image
JoaoFlach

Top! Pra mim só não deu certo a parte do spaceship theme. Não sei o que fiz de errado, but I will figure it out. :)

Collapse
 
redspaace profile image
Nycollas

eu só tiver problema na hora de instalar o ZSH em si. O terminal retorna:
Não é possível localizar um parâmetro que coincida com o nome de parâmetro 'fsSL'.

Alguém mais com esse problema?