3

Um pouco mais de produtividade no seu Terminal Linux

#Produtividade
André Gomes
André Gomes

A ideia nesse post é apresentar algumas ferramentas que podem dar mais produtividade ao nosso dia-a-dia usando um terminal.

Se você é desenvolvedor, muito provavelmente passa algum tempo do seu dia olhando essa linda tela preta, digitando seus comandos, fazendo build dos seus projetos:

 

Image for post

Ou, para os mais avançados que curtem um tuning…

 

Image for post

ahh! Esse WARN do Kafka. Eu esqueci o broker down :/

Nesse artigo irei supor que alguns termos como Unix Shell, Terminais, já são conhecidos por você, pois quero focar nas ferramentas. Em outro artigo irei abordar alguns conceitos de Sh, Bash, Zsh e comandos úteis, e em outro, que ainda está no backlog, pretendo mostrar o meu setup de tema e fonte que uso com PowerLevel10k e diversas funcionalidades que podem deixar o seu terminal parecendo um cockpit.

Segundo o Wakatime, esse foi o tempo que gastei no terminal nos últimos 7 dias.

 

Image for post

Wow! Para mim, é tempo demais. Tentar deixar esse ambiente mais amigável e produtivo é uma ótima ideia.

Instalação básica

Tudo que irei mostrar está baseado no meu setup atual. Não sei como as ferramentas e demais plugins podem se comportar em versões diferentes.

  • Ubuntu 19.04
  • Terminator 1.91
  • Zsh 5.5.1
  • oh-my-zsh
  • git

Tenho alguns gists no GitHub que uso para instalar minhas ferramentas de desenvolvimento em computadores novos, fique a vontade para conferir:

Vamos às ferramentas…

Terminator

$ sudo apt install terminator

Terminator é um terminal que permite múltiplos terminais em uma única janela. Com isso é possível criar abas novas, dividir o terminal vertical e horizontalmente, fazer broadcast de comandos para mais de um terminal.

A primeira coisa que você deve saber é onde estão os atalhos para as ações: Terminator Preferences > keybindings. A lista é grande, abaixo os que devem estar em sua memória muscular.

  • Nova Aba: Ctrl + Shift + T
  • Split vertical: Ctrl + Shift + E
  • Split horizontal: Ctrl + Shift + O
  • Zoom In/Out: Ctrl + Shift + X (Bem útil quando abusamos do split e queremos dar um foco em alguma informação que está em uma janela pequena)
  • Broadcast para todas as abas: Alt + a (Bem útil quando você precisa digitar o mesmo comando em terminais diferentes)
  • Parar o broadcast: Alt + o
  • Navegar entre as Janelas de uma aba: Alt + <Up/Down/Left/Right>
  • Navegar entre abas: Ctrl + Page Up/Down (No meu caso eu preciso adicionar o Fn para usar Page Up/Page Down)

Copy and Paste

Você deve ter percebido que Ctrl + c e depois um Ctrl + v não funciona no terminal. Isso, pois os atalhos corretos são Ctrl + Shift + C e Ctrl + Shift +V. Se for insuficiente e você precisar copiar mais de uma coisa existe o Alt + Insert e o Shift + Insert. Se continua sendo insuficiente, lembre-se que qualquer texto selecionado pode ser colado com o clique do scroll do mouse.

xclip

$ sudo apt install xclip

O xclip permite copiar e colar conteúdo do terminal para onde você queira.

$ docker images | grep php7.3 | awk '{print  $3}' | xclip$ xclip -o
6895de0096d5

Muito útil para copiar valores complexos com uma chave pública.

$ xclip -sel clip < ~/.ssh/id_rsa.pub

Uma alternativa é o parcellite, mas não cheguei a testa-lo ainda.

oh-my-zsh

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

Instalar o Zsh como shell padrão é importante para o correto funcionamento do oh-my-zsh, por isso siga as instruções corretamente.

sudo apt install zsh

oh-my-zsh é um framework para configuração e customização do Zsh, com diversas funcionalidades pre-definidas além de permitir a instalação de muitos plugins que irei mostrar agora. Provavelmente a utilização destes não dependem exclusivamente do oh-my-zsh, porém, eu não pesquisei como instalá-los de outra forma, fique a vontade para comentar ;)

Tab-completion

Você precisa abusar do Tab enquanto estiver usando seu terminal. O Tab é seu melhor amigo. Use o Tab no terminal assim como um desenvolvedor usa Ctrl + space na IDE.

Digitando o seu comando antes de completar. Pressione Tab para sugestões de quais comandos usar. Continue pressionando Tab para pular de sugestão em sugestão:

 

Image for post

Uma vez escolhido, e antes de começar a digitar parâmetros para o seu comando, pressione Tab novamente para ver a lista de opções totalmente navegável pelas setas.

 

Image for post

O mesmo é válido para parâmetros com - ou --

 

Image for post

Use em diretórios também com cd

 

Image for post

Plugins

Diversos plugins podem ser habilitados sem nenhuma instalação, aqui está a lista completa. Outros dependem de uma pequena instalação e configuração manual.

Depois de instalados, você precisa habilitá-los no seu .zshrc

plugins=(
 git
 bgnotify
 command-not-found
 zsh-autosuggestions
 zsh-syntax-highlighting
)

git

O plugin de git não demanda instalação, basta ativá-lo no .zshrc

Este plugin expõe diversos atalhos para comandos git, a lista completa está no link acima ☝️ Ex.:

  • gst => git status
  • gd => git diff

bgnotify

O plugin bgnotify não demanda instalação, basta ativá-lo no .zshrc

Ele habilita notificações no OS quando algum comando termina de rodar. É comum quando estamos esperando algo rodar por muito tempo e enquanto esperamos, fazemos outras atividades.

 

Image for post

command-not-found

O plugin command-not-found não demanda instalação, basta ativá-lo no .zshrc

Este plugin irá sugerir uma forma de instalar algum software caso ele não esteja instalado.

 

Image for post

zsh-autosuggestions

Instalação manual

$ git clone https://github.com/zsh-users/zsh-autosuggestions $HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions

Este plugin sugere comandos baseados no seu histórico.

 

Image for post

Você precisa apenas apertar a tecla Right (⇾) e ele completa. Ou, com o Ctrl pressionado, é possível ir navegando entre a sugestão.

zsh-syntax-highlighting

Instalação manual

$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting

Esse plugin irá deixar seus comandos mais legíveis com highlighting da sintaxe.

 

Image for post

no Zsh com o zsh-syntax-highlighting

 

Image for post

sem o plugin zsh-syntax-highlighting, usando bash e sh

fzf

Uma das coisas mais úteis é saber buscar no seu history para ter acesso aos comandos digitados e repeti-los. Usando o Ctrl + r, podemos iniciar uma busca, e ir teclando Ctrl + r para olhar as opções filtradas:

 

Image for post

Com o Fuzzy Finder é possível fazer qualquer busca de forma interativa, inclusive no histórico, com uma navegação simples e rápida usando as setas para cima e para baixo.

Uma vez instalado, o Ctrl + r já fica habilitado com ele.

$ git clone — depth 1 https://github.com/junegunn/fzf.git ~/.fzf$ ~/.fzf/install

seu arquivo .zshrc fica com [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

 

Image for post

Existe o plugin para o oh-my-zsh, porém não testei ainda.

GoTo

goto é uma ferramenta muito útil para criar atalhos para diretórios. Se você navega bastante entre diferentes diretórios, por exemplo, fica em constante trabalho no seu workspace ( /home/USER/workspace/projects ) e precisa acessá-lo frequentemente, basta criar o atalho via linha de comando

$ goto -r projects /home/USER/workspace/projects

 

Image for post

alias to=”goto” no seu .zshrc

 

Image for post

alias to=”goto”

Bom, isso é tudo. Não deixe de comentar caso você use alguma ferramenta diferente e se faltou algo nessa lista, pois existem diversas ferramentas que eu não conheço. Se deixei de falar algum detalhe ou alguma dica, comente também ;)

0
16

Comentários (2)

1
Patrick Leite

Patrick Leite

14/08/2021 09:38

Show!

1
Patrick Leite

Patrick Leite

14/08/2021 09:38

Muito interessante este artigo, com certeza ajuda muito!

None