Do not speak Portuguese? Translate this site with Google or Bing Translator
Terminal com Oh My Zsh, Spaceship, Dracula e mais

Posted on: November 19, 2021 04:33 PM

Posted by: Renato

Views: 7028

# Terminal com Oh My Zsh, Spaceship, Dracula e mais


por Diego Fernandes e atualizado por min Renato Lucena - 19-11-2021

 

# Oh My Zsh: usando um terminal personalizado e produtivo!

> Os interpretadores de comando são ferramentas utilizadas nos sistemas operacionais para processar comandos digitados pela pessoa usuária. Para isso, eles necessitam de um terminal que, geralmente, tem uma interface bem básica. O Oh My Zsh é uma ferramenta que modifica essa condição, pois ele permite a customização do terminal. Isso contribui para a melhor visualização dos comandos digitados e dos retornos do sistema.

> Nos prompts de comando padrão não há diversos recursos, como a utilização de cores para destacar informações importantes, autopreenchimento de comandos e muitos outros. Isso faz com que a pessoa programadora perca mais tempo com a realização de suas atividades no terminal.

> Por permitir a utilização de cores e outros recursos, o uso do Oh My Zsh proporciona diversos benefícios, como melhorar a produtividade, além de deixar o terminal mais agradável de usar.

# O que é o Oh My Zsh?

> O Oh My Zsh é um framework open source que possibilita o gerenciamento das configurações do interpretador de comandos Zsh, que é uma alternativa ao shell padrão oferecido pelo sistema operacional. Sua utilização ajuda a tornar o terminal de comandos muito mais amigável e funcional. Ele é mais indicado para os sistemas operacionais Linux e macOS.

# Como instalar o Zsh?

Antes de instalar o framework Oh My Zsh, é preciso instalar o interpretador de comandos Zsh, que é a abreviatura de Z-Shell. Veja como realizar essa tarefa no Linux e no macOS.

# Linux

Para instalar o Zsh no Linux por meio do interpretador de comandos, basta digitar o seguinte comando no terminal:

sudo apt-get install zsh 

Vale ressaltar que, como existem várias distribuições do Linux, o comando de instalação pode variar entre elas.      

# macOS

Para instalar o Zsh no macOS, digite o seguinte comando:

brew install zsh

- https://blog.betrybe.com/ferramentas/oh-my-zsh/

O tema do meu VSCode (que é o Dracula) e as configurações do meu terminal de desenvolvimento.

Antes de mais nada, nesse post vou considerar que você esteja utilizando Unix (Mac ou Linux) já que no Windows fica bem inviável configurar o que eu menciono nesse post a não ser que você crie um subsistema Linux dentro dele.

A minha ideia com esse post é mostrar exatamente todas configurações que faço em meu terminal como tema, plugins, configurações, etc.

# Instalando Zsh

Antes de conseguirmos iniciar com qualquer configuração precisamos instalar o Zsh. Como existem várias formas de instalação dependendo do sistema operacional que você está, leia esse guia: https://github.com/robbyrussell/oh-my-zsh/wiki/Installing-ZSH

Com o Zsh instalado deve ser possível você executar:

zsh --version

E receber algo como: zsh 5.3 (x86_64-apple-darwin18.0).

# Instalando Oh My Zsh

Para instalar o Oh My Zsh você precisa executar o comando abaixo (você deve ter o cURL instalado para executa-lo):

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"


A partir de agora todas configurações que você quer fazer como adicionar variáveis ambientes ou configurar seu terminal de qualquer forma utilize o arquivo ~/.zshrc e não mais o ~/.bash_profile ou derivados.

Agora reiniciando seu terminal você deve ter algo diferente do convencional, parecido com isso:

anexo:

Lembrando que a ainda vamos realizar configurações de cores, informações que aparecem em tela, etc.

# Utilizando Dracula

Dracula é um padrão de cores disponível para muitas aplicações de desenvolvimento e hoje utilizo esse esquema em boa parte dos apps em que desenvolvo.

O Dracula está disponível para muitos terminais e você pode conferir todos aqui: https://draculatheme.com na seção "Terminal".

Se você estiver no Mac usando o Terminal padrão, provavelmente irá usar: https://draculatheme.com/terminal/

Se você estiver no Linux com uma distribuição que usa Gnome, vai utilizar: https://github.com/dracula/gnome-terminal

# Tema Spaceship

Agora vamos instalar o tema Spaceship que vai modificar um pouco as informações que são exibidas no terminal, com ele podemos mostrar a versão do Node atual, do Docker, etc.

# Instalando FiraCode

Antes de iniciar a configuração do Spaceship precisamos instalar a fonte Fira Code que possui diversos ícones dos quais são utilizados nesse tema. Baixe o zip da última versão da fonte disponível aqui: https://github.com/tonsky/FiraCode/releases

Descompacte o arquivo baixado e na pasta TTF copie os arquivos de fonte para as fontes do seu sistema (cada sistema operacional possui uma forma de fazer isso).

Depois disso será necessário configurar seu terminal com essa fonte, abaixo mostro uma imagem de como configurei no Mac:

# Instalando Spaceship

Vamos começar clonando o repositório do Spaceship em nossa pasta de themes do Oh My Zsh (é necessário ter instalado o Git pra isso):

git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt"

Agora vamos criar um link simbólico para o arquivo do tema do Spaceship na pasta dos temas do Oh My Zsh:

ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

Agora dentro do arquivo ~/.zshrc vamos alterar a variável ZSH_THEME ficando dessa forma:

ZSH_THEME="spaceship"

Agora reinicie o terminal e você verá uma interface bem mais limpa, parecida com essa:

anexo

# Configurações adicionais

A partir de agora você já finalizou todas instalações e tudo a partir de aqui são preferências minhas que gosto de utilizar em meu terminal, por isso fique à vontade para incluir/excluir qualquer item abaixo.

# Configurando Spaceship

Por mais que seja muito interessante mostrar as versões do Node, Docker e outros itens no nosso terminal geralmente isso consome processamento e pode tornar mais lento o carregamento de pastas, por isso eu gosto de desabilitar a maioria dessas opções.

No fim do arquivo ~/.zshrc adiciono o seguinte conteúdo:


SPACESHIP_PROMPT_ORDER=(
  user          # Username section
  dir           # Current directory section
  host          # Hostname section
  git           # Git section (git_branch + git_status)
  hg            # Mercurial section (hg_branch  + hg_status)
  exec_time     # Execution time
  line_sep      # Line break
  vi_mode       # Vi-mode indicator
  jobs          # Background jobs indicator
  exit_code     # Exit code section
  char          # Prompt character
)
SPACESHIP_USER_SHOW=always
SPACESHIP_PROMPT_ADD_NEWLINE=false
SPACESHIP_CHAR_SYMBOL="❯"
SPACESHIP_CHAR_SUFFIX=" "

# Plugins do ZSH

Utilizo alguns plugins bem legais para o Oh My Zsh que facilitam muito na hora de executar comandos comuns, realizar autocompletes, etc...

Para instalar plugins precisamos configurar o ZInit, ferramenta que facilita a instalação e remoção de plugins no Zsh.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma/zinit/master/doc/install.sh)"
ou
sh -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"

Após essa instalação, vamos abrir o arquivo ~/.zshrc novamente e abaixo da linha ### End of ZInit's installer chunk que foi adicionada automaticamente no arquivo, adicionamos:

zinit light zdharma-continuum/fast-syntax-highlighting
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-completions

Esses são os plugins que utilizo e abaixo explico como funciona cada um deles:

- zdharma/fast-syntax-highlighting: Adiciona syntax highlighting na hora da escrita de comandos que facilita principalmente em reconhecer comandos que foram digitados de forma incorreta;
- zsh-users/zsh-autosuggestions: Sugere comandos baseados no histórico de execução conforme você vai digitando;
- zsh-users/zsh-completions: Adiciona milhares de completitions para ferramentas comuns como Yarn, Homebrew, NVM, Node, etc, para você precisar apenas apertar TAB para completar comandos;

# Terminal no VSCode

Se, assim como eu, você utiliza o VSCode pode adicionar a seguinte configuração abaixo para utilizar o Oh My Zsh no terminal integrado:

"terminal.integrated.shell.osx": "/bin/zsh"
ou
"terminal.integrated.defaultProfile.osx": "/bin/zsh",

# Concluindo

Pronto, se você configurou todos passos acima então seu terminal deve estar exatamente igual o meu assim como mostro nas aulas :)

Meu arquivo ~/.zshrc com todas opções acima está disponível em: https://gist.github.com/diego3g/b0513d5ff6d9d983c48bed3fd8f10cdb

Não esquece de deixar um comentário abaixo se você curtiu esse post e minhas configurações do terminal e também com dicas do que eu poderia adicionar :)

 

Fontes:

- https://ohmyz.sh/
- https://github.com/zdharma-continuum/zinit
- https://blog.rocketseat.com.br/terminal-com-oh-my-zsh-spaceship-dracula-e-mais/
- https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH-ZSH
- https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
- https://github.com/getomni/gnome-terminal/blob/main/INSTALL.md
- https://developpaper.com/iterm2-oh-my-zsh-create-comfortable-terminal-experience/
 


14

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (15) Variados (109) PHP (130) Laravel (157) Black Hat (3) front-end (28) linux (111) postgresql (39) Docker (25) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (54) devops (25) nodejs (5) npm (2) nvm (1) git (8) firefox (1) react (6) reactnative (5) collections (1) javascript (6) reactjs (7) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (0) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (1) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (11) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (4) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (1) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (37) Kubernetes (2) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (1) jwt (4) security (2) translate (1) kube (1) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (2) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (2) Architecture (3) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (1) autorizacao (2) authentication (4) authorization (2) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1)

New Articles



Get Latest Updates by Email