Turbinando sua Produtividade: Autocomplete e Personalização no Terminal do Windows
Tags: windowns, terminal, produtividade, productivity
Published: 2024-04-27 13:52:16


Se você busca um terminal mais inteligente e visualmente atraente, capaz de antecipar seus comandos, reduzir a digitação repetitiva e oferecer um autocomplete eficaz, então você veio ao lugar certo! Vamos explorar como tornar o terminal do Windows uma ferramenta poderosa.

##Começando

-  **Windows Terminal**: Comece instalando o Windows Terminal através da Microsoft Store ou baixando-o diretamente no GitHub. Ele oferece uma interface moderna e suporte para múltiplos terminais, como PowerShell, Command Prompt e WSL.

![Windows Terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/64hyqm8wfzqul143yzxe.png)

- **Oh My Posh**:  
Essa é uma extensão que personaliza a aparência e o conteúdo da linha de comando. Por aqui, incluí o nome do usuário, o caminho da pasta, a branch atual, e a hora e uma experiência de terminal mais eficiente. 

![Oh My Posh](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xxpii9rcbfdep5g8avm2.png)
Para instalar o oh-my-posh, uma das opções é usar o winget, mas você pode usar o scoop, o próprio PowerShell ou chocolatey como mostrado na [documentação](https://ohmyposh.dev/docs/installation/windows):

```
winget install JanDeDobbeleer.OhMyPosh -s winget
```


Após instalar isso, o seu terminal precisa "saber" que deve usar o oh-my-posh. Para isso, vamos configurar o perfil do Powershell no VS Code. Basta executar o comando abaixo.

```
code $PROFILE
```

> _se não tiver o vscode instalado pode usar no bloco de notas da seguinte maneira:_

```
notepad $PROFILE
```
Esse arquivo Microsoft.PowerShell_profile.ps1 que abriu é responsável  por lê e executa os comandos desse arquivo a cada vez que o PowerSell é aberto. Nele, copie e cole o seguinte comando:

```
& ([ScriptBlock]::Create((oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" --print) -join "`n"))
```

Você pode trocar o `"$env:POSH_THEMES_PATH\jandedobbeleer.omp.json"` pela url do seu tema. [Aqui](https://ohmyposh.dev/docs/themes) você encotra diversos temas para o o Oh My Posh.

**Salve e Recarregue o Terminal:**
Salve o arquivo Microsoft.PowerShell_profile.ps1.
Feche e abra novamente o terminal ou recarregue o perfil do PowerShell.

**Visualize as Mudanças:**
Depois de recarregar o terminal, você deve ver as melhorias na linha de comando, incluindo informações como seu nome de usuário, diretório atual, ramificação do Git e hora

> Antes de salvar meu terminal estava assim:

![Terminal Antes](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7frcnu4wcp6j5zlmkp6e.png)

> Após esse procedimento ficou assim:

![Terminal Depois](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bohlluz7n7r3z7x12dar.png)

- **Nerd Fonts**:  
Para que os ícones do seu terminal apareçam, o oh-my-posh precisa que você use uma fonte compatível com eles, e uma das recomendações da própria aplicação é instalar uma fonte dentre as "Nerd Fonts".

Você pode baixar diretamente do [repositório](https://github.com/ryanoasis/nerd-fonts) deles, ou usando um comando do oh-my-posh:

```
oh-my-posh font install
```

- **Terminal Icons**:  
Essa é mais uma extensão para melhorar a aparência do terminal, acrescentando ícones do tipo de arquivo ou pasta que está na lista:

![Terminal Icons](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k4j5s8gvo7howulp25dc.png)
Para instalar, basta rodar os seguintes comandos no seu terminal:

```
Install-Module -Name Terminal-Icons -Repository PSGallery -Force
Import-Module Terminal-Icons
```
A cada vez que você abrir seu terminal, para ver o terminal Icons em funcionamento, você precisaria rodar novamente o comando `Import-Module Terminal-Icons`. Para que isso não seja necessário, basta acrescentar esse comando no arquivo de perfil do Powershell. (Lembra como faz isso? -> `code $PROFILE`).

##Melhorias de Produtividade com Autocomplete##
Agora, vamos falar sobre algumas extensões que são super úteis para facilitar o seu trabalho diário, especialmente quando estiver navegando entre as pastas.

- **Z**:
Esta é uma extensão de intellisense que consegue aprender com a forma como você navega entre as pastas. Isso significa que você não precisa mais digitar o caminho completo toda vez que quiser acessar uma pasta específica.

Como é um intellisense, o Z precisa de algumas navegações entre as pastas para "aprender" quais você acessa com mais frequência.
use assim: 

> Na primeira vez que usar use o nome da pasta completo. Como ex:

```
z crypto-trends
```
Na segunda vez em diante, você só precisa digitar parte do nome da pasta, e o Z já identificará a pasta desejada. Por exemplo, se você digitou "z crypto" anteriormente, na próxima vez pode digitar apenas:

![Z](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e676u76pazirgik2bv9a.png)

- **PSReadLine**
O PSReadLine é um módulo do Powershell que permite o autocomplete de uma forma inteligente, também. Algumas configurações interessantes podem ser usadas para visualizar e navegar pelo histórico de comandos similares ao que você está digitando:

![PSReadLine](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qqoqcflt9r55sub53m39.png)
Para instalar, o comando é:

```
Install-Module -Name PSReadLine -AllowPrerelease -Force -SkipPublisherCheck
```
gora, para garantir que as opções de autocomplete apareçam como mostrado na imagem anterior, vamos adicionar alguns comandos ao seu perfil do PowerShell (aquele `code $PROFILE`).

```
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete

Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView
```

- **Posh git**
O posh-git será seu novo melhor amigo. Com autocomplete para comandos do Git, você pode navegar entre branches e commits com facilidade, economizando tempo e esforço. Um simples "tab" após digitar git checkout, por exemplo, faz com que apareçam todas as opções de branches existentes no projeto.


![Posh git](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zdokcwpx2m9vpt7ub7xk.png)

Para usar, basta rodar o comando:

```
Install-Module posh-git -Scope CurrentUser -Force
```

- **Aliases Personalizados**: Crie aliases para comandos frequentemente usados e aproveite o autocomplete para acessá-los rapidamente. Por exemplo:

```powershell
Set-Alias g git
```

![Aliases Personalizados](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6zsuw5dhk2c6gqi9bax.png)

**Segue abaixo o meu arquivo de perfil do PowerShell:**

```
# Import-Module oh-my-posh ecarregar tema
& ([ScriptBlock]::Create((oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" --print) -join "`n"))
#Import-Module de Icones do terminal
Import-Module Terminal-Icons

#import do autocomplete por historico
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView

# import do autocomplete do git
Import-Module Posh-Git

#Uso o  para não ficar poluido o terminal
clear-host

#Alias do git, não ter que digitar git no lugar só coloco g
Set-Alias g git

#Alias do chocolatey(Só use se tiver o chocolatey)
function Install-Choco {
    choco install $args
}

Set-Alias install Install-Choco
```

## Atalhos do Terminal

Aqui estão alguns atalhos úteis para agilizar sua interação com o terminal:

- **Ctrl + Shift + t**: Criar uma nova aba no Windows Terminal.
- **Ctrl + Tab**: Alternar entre as abas no Windows Terminal.
- **Alt + Shift + -**: Criar um pane na horizontal no Windows Terminal.
- **Alt + Shift + +**: Criar um pane na vertical no Windows Terminal.
- **Ctrl + Shift + w**: Remover um pane no Windows Terminal.
- **Alt + seta**: Navegar entre os panes no Windows Terminal.
- **Ctrl + seta**: Navegar entre as posições dentro de um pane no Windows Terminal.
- **Alt + Shift + seta**: Redimensionar panes no Windows Terminal.
- **F11**: Alternar entre o modo fullscreen e o modo normal no Windows Terminal.

Esses atalhos podem variar de acordo com a configuração do seu sistema ou outras extensões instaladas. Certifique-se de consultar a documentação do Windows Terminal para obter a lista completa de atalhos e funcionalidades.


##Conclusão

Ao adotar as ferramentas e técnicas apresentadas, você não apenas transforma sua experiência de linha de comando, mas também eleva sua produtividade e eficiência a novos patamares. O Windows Terminal não é apenas uma janela para seus sistemas; é uma porta de entrada para um universo de possibilidades.

Personalizando sua linha de comando com o Oh My Posh, Nerd Fonts e Terminal Icons, você não apenas torna sua interação mais visualmente atraente, mas também mais informativa e funcional. A navegação rápida entre pastas com o Z, o autocomplete inteligente do PSReadLine e a facilidade de uso do posh-git simplificam suas tarefas diárias e liberam tempo para o que realmente importa: sua criatividade e inovação.

Portanto, mergulhe fundo, experimente, personalize e descubra como o terminal no Windows pode se tornar seu aliado mais poderoso. Combinando estilo, funcionalidade e eficiência, você está pronto para enfrentar qualquer desafio, abrir caminhos e alcançar novos horizontes em sua jornada digital.

##Referências#
[Personalizando o terminal](https://dev.to/danicaus/personalizando-o-windows-terminal-50ca)
[Documentação do PSReadLine](https://learn.microsoft.com/en-us/powershell/module/psreadline/?view=powershell-7.2)
[Documentação do OhMyPosh](https://ohmyposh.dev/docs)
[Alias do chocolatey](https://www.reddit.com/r/chocolatey/comments/1c4lif8/how_to_create_aliases/?rdt=38201)
[Documentação do NerdFonts](https://github.com/ryanoasis/nerd-fonts)
[Atalhos do Terminal](https://www.manualdocodigo.com.br/windows-terminal/#:~:text=Seja%20mais%20PRODUTIVO.%201%20Introdu%C3%A7%C3%A3o%20Neste%20artigo%20mostrarei,Appearance%20...%208%20Color%20schemes%20...%20More%20items)