O que eu uso no meu dia a dia?

Já uso GNU/Linux faz alguns anos, porém me considero como alguém que está e sempre estará no nível iniciante desse incrível sistema operacional. Apesar disso, decidi mostrar um pouco do meu workflow do dia a dia.

Além de usar Linux no trabalho, eu também uso em casa como meu principal SO, mas as vezes também uso o Windows para jogar.

Atualmente, estou usando a distro Arco Linux, sim Arco. Alguns anos atrás, surfando na web para achar algo que substituísse o Manjaro, me deparei com alguns vídeos do criador do Arco Linux mostrando a distribuição dele, como uma alternativa mais simples ao Arch e com muitas customizações, várias Desktop Environments, como XFCE e Tiling Window Managers configuradas também, como a i3wm.

Antes de chegar nessa distro, comecei no Ubuntu para fazer um curso online de programação, e foi a primeira vez que tive contato com outro sistema que não fosse Windows.

A minha primeira mudança do Windows para o Linux não foi tão sofrida. Na epoca, o Ubuntu estava com o Unity e eu achava muito bonito, o que me interessou bastante. Alguns meses depois o HD queimou e eu fiquei alguns meses no Windows, aprendendo Java com o Eclipse.

Depois do Ubuntu, já usei diversas distros, Debian, Mint, ElementaryOS, Arch, Manjaro, respectivamente. A minha última experiência com Arch Linux puro foi antes do meu laptop ter sido roubado. Ele tinha alguns problemas, mas funcionava bem. Foi o período em que eu mais passava tempo customizando o computador, usando Vim + i3wm, combinação muito boa, talvez não muito produtiva para alguém que não tem muita experiência, mas bem legal, com certeza!

Bom, falei do Vim no parágrafo acima, meu editor de texto favorito. Por que favorito num tempo em que temos VS Code, JetBrains, Emacs, entre outros? Primeiro, provavelmente foi porque na época que eu comecei a programar não tinha o VS Code ainda, a sensação do momento era o Sublime. Na verdade eu realmente não sei o que me motivou a usá-lo, mas eis-me aqui =D.

Então por que continuar usando ele até hoje? Porque depois de um bom tempo utilizando o Vim, você se acostuma e se sente muito mais confortável devido ao fato de utilizar menos o mouse e navegar bastante com o teclado apenas. Confesso que quando tenho que usar algum editor de texto sem o Vim-mode, fico desconfortável depois de algum tempo de uso. E mesmo com os outros editores de textos tendo algum plugin que ativa o vim-mode(até o Emacs tem), eu não sei até que pontos eles simulam o ambiente do vim, pois eu utilizo vários plugins e vários remapeamentos de teclas no meu vim.

Após essa longa introdução, irei fazer uma listagem dos principais itens que considero importante para o meu dia a dia.

Terminal:

Meu principal emulador de terminal é o Alacritty. Ele é bem rápido e tem uma customização bem fácil em YAML, também tem algumas funcionalidades bem legais, como abrir links no navegador de forma bem fácil.

Shell:

Fish Shell <3. Já usei o zsh também, mas não consigo viver sem o fish. Uso basicamente tudo builtin, tirando alguns mapeamentos e abreviações. Se você usa o bash, tenho certeza que vai achar o fish muito bom!

Vim

Sou muito acostumado a falar Vim, principalmente para evitar complicar as pessoas que estão iniciando, mas na verdade eu utilizo o Neovim, um fork do Vim, feito pela comunidade. As atualizações nele chegam bem mais rápido, e você realmente pode contribuir caso deseje, o Vim é muito mais complicado para fazer esse tipo de coisa, pois só tem um mantenedor, que é bem rígido.

Eu uso vários plugins no vim. O principal é o Coc.nvim, que é uma intelliSense engine, serve para linting, code complete, navegar no código, achar referências… Enfim, quase indispensável para o meu dia a dia. O próprio Neovim está desenvolvendo um sistema de LSP, mas nunca testei, que é e nvim-lsp. Talvez valha a pena tentar antes do Coc.nvim

Acredito que a necessida de plugins é algo vivo, não adianta colocar vários plugins ao mesmo tempo. Assim que surge a necessidade de alguma feature, você pode adicionar essa funcionalidade no seu editor. Por exemplo, para abrir arquivos, existe o NERDTree, o netrw, o Fzf. Cada um tem sua funcionalidade e sua utilidade. Eu mesmo sou acostumado com o NERDTree para navegar, abrir, alterar nome etc direto pelo vim, mas o netrw, builtin do vim também faz isso.

Se você deseja aprender o vim, sugiro que instale um plugin no seu editor de texto favorito(provavelmente existe um plugin de vim!) e se acostume com a movimentação. Depois disso, você já pode começar a mexer no vim realmente, adicionar os plugins que você é acostumado na sua IDE/editor de texto, e tentar ser mais produtivo nele. Mas isso leva bastante tempo! Não desiste do vim e nem da sua IDE nesse meio tempo. :) Existem muitos dotfiles incríveis disponíveis, o meu é super desorganizado, mas caso deseje ver, está aqui.

TMUX

O Tmux é um multiplexador de terminal. Basicamente você consegue abrir vários painéis em uma única tela, criar outras janelas, criar sessões etc. Outro ponto bem legal dele é que você consegue abrir ele no servidor ssh, executar um comando, sair do servidor, depois voltar e a sessão do tmux estará lá intacta com o seu trabalho feito previamente.

Geralmente eu programo com 4/5 da tela aberta no código e um painel aberto embaixo com alguma coisa aberta, por exemplo o servidor do Django, ou o REPL de alguma linguagem.

XFCE

Sempre gostei bastante do XFCE pela simplicidade, tenho várias shortcuts que já vieram mapeadas com o Arco Linux e me acostumei bastante.

Conclusão sem conclusão

Existem diversas outras ferramentas que uso no meu dia a dia, mas essas são a base em que eu uso todas as outras. Por exemplo, programo em Python e Typescript pelo Vim.

Apesar de eu considerar essas ferramentas bastante importantes para mim, se você está iniciando, apenas aprenda a programar e depois foque em melhorar o seu ambiente de desenvolvimento. No meu início, perdia muitas e muitas horas apenas customizando o Linux. Não que isso seja ruim, mas dependendo do seu objetivo, pode lhe atrasar.

Então, primeiro foque em usar Linux, aprender alguma linguagem para trabalhar, e depois aprenda a usar o Vim, ganhar fluência na linha de comando etc.

Mesmo essas ferramentas não sendo essenciais para o seu caminho como desenvolvedor(existem diversas outras ótimas alternativas também), você será no mínimo um programador mais eficiente ao programar com elas, talvez até um programador melhor!

OBS: Existem vários caminhos que você pode seguir para aprimorar o seu ambiente de desenvolvimento. Pode usar Emacs, Vim, programar em alguma linguagem funcional, aprender sobre infraestrutura etc. Todos esses caminhos e diversos outros são válidos, mas tente evitar o comodismo e esteja sempre disposto a aprender novas ferramentas e paradigmas diferentes!

OBS2: Escrevi esse blog post no vim também =D.