Um pouco mais de produtividade no seu Terminal Linux
- #Produtividade
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:
Ou, para os mais avançados que curtem um tuning…
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.
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
- https://gnometerminator.blogspot.com/p/introduction.html
- https://terminator-gtk3.readthedocs.io/en/latest/index.html
$ 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:
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.
O mesmo é válido para parâmetros com -
ou --
Use em diretórios também com cd
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.
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.
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.
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.
no Zsh com o zsh-syntax-highlighting
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:
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
seu arquivo .zshrc
fica com [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
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
alias to=”goto” no seu .zshrc
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 ;)