This is a quick tutorial on getting the basics of a useful Terminal environment for development on a Windows machine.

Open Windows Terminal

I like to work in Windows Terminal for its tabbed sessions. This is installed on Windows machines by default now and should be ready to go.

Install Some CLI Tools

Either install individual applications if you’d like or import a manifest file like below. To shortcut this process, copy the command below and paste it into your terminal but don’t run it. Then copy the manifest and run the command to install all the applications in the manifest.

Get-Clipboard | Set-Content "$env:TEMP\winget-manifest.json"; winget import -i "$env:TEMP\winget-manifest.json" --accept-package-agreements;

winget Manifest

{
    "$schema" : "https://aka.ms/winget-packages.schema.2.0.json",
    "CreationDate" : "2025-10-13T12:30:02.669-00:00",
    "Sources" : 
    [
        {
            "Packages" : 
            [
                {"PackageIdentifier" : "SlackTechnologies.Slack"},
                {"PackageIdentifier" : "Zoom.Zoom"},
                {"PackageIdentifier" : "GitHub.GitHubDesktop"},
                
                {"PackageIdentifier" : "Microsoft.VisualStudioCode"},
                {"PackageIdentifier" : "Microsoft.DotNet.DesktopRuntime.8"},
                {"PackageIdentifier" : "Microsoft.DotNet.AspNetCore.8"},
                {"PackageIdentifier" : "Microsoft.DotNet.SDK.8"},
                {"PackageIdentifier" : "Microsoft.AzureCLI"},
                {"PackageIdentifier" : "Microsoft.PowerShell"},
                {"PackageIdentifier" : "Microsoft.WindowsTerminal"},
                {"PackageIdentifier" : "Microsoft.WSL"},
                {"PackageIdentifier" : "RedHat.Podman"},
                {"PackageIdentifier" : "RedHat.Podman-Desktop"},
                {"PackageIdentifier" : "Git.Git"},
                {"PackageIdentifier" : "GitHub.cli"},
                {"PackageIdentifier" : "Derailed.k9s"},
                {"PackageIdentifier" : "Kubernetes.kubectl"},
                {"PackageIdentifier" : "Microsoft.Azure.Kubelogin"},                
                
                {"PackageIdentifier" : "Microsoft.SQLServerManagementStudio.21"},
                {"PackageIdentifier" : "JanDeDobbeleer.OhMyPosh"},
                {"PackageIdentifier" : "Logitech.OptionsPlus"},
                {"PackageIdentifier" : "junegunn.fzf"},
                {"PackageIdentifier" : "Neovim.Neovim"},
                {"PackageIdentifier" : "sharkdp.bat"},
                {"PackageIdentifier" : "OpenJS.NodeJS"}
            ],
            "SourceDetails" : 
            {
                "Argument" : "https://cdn.winget.microsoft.com/cache",
                "Identifier" : "Microsoft.Winget.Source_8wekyb3d8bbwe",
                "Name" : "winget",
                "Type" : "Microsoft.PreIndexed.Package"
            }
        }
    ],
    "WinGetVersion" : "1.6.10121"
}

PowerShell 7

Get PS7 and enhanced auto-complete

winget install Microsoft.Powershell

git

winget install Git.Git

Text Editors

Neovim: A quick, lightweight text editor, helpful for fzf preview and small file edits

Bat: A text file reader with syntax highlighting NodeJS: Used by some vim plugins

winget install neovim
winget install bat --source winget
winget install OpenJS.NodeJS
Neovim Configurations

First, install the plugin manager vim-plug with the command

iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
    ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force

Create a config file at ~\AppData\Local\nvim\init.vim, populate it with some preferences like

set writebackup
set ignorecase
set number
call plug#begin()
Plug 'junegunn/vim-easy-align'
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install -all' }
Plug 'junegunn/fzf.vim'
Plug 'github/copilot.vim'
Plug 'folke/tokyonight.nvim'
call plug#end()
let g:fzf_vim = {}
let g:fzf_vim.preview_window = ['hidden,right,70%', 'ctrl-/']
colorscheme tokyonight

Open nvim and run :PlugInstall. Close and reopen nvim and you should be able to run commands like :Files Also, to setup Copilot run :Copilot setup

Set neovim as your GitHub CLI editor!

gh config set editor nvim

fzf

Fuzzy finder, a useful tool for quickly maneuvering around and searching through files

winget install fzf
Install-Module PSfzf
[Environment]::SetEnvironmentVariable('_PSFZF_FZF_DEFAULT_OPTS', '--height 30%', 'Machine')

Profile addition to customize, this variable is also used by fzf.vim

$env:FZF_DEFAULT_OPTS="-i -m --preview-window='right:65%' --preview='bat --theme=OneHalfDark --color=always {}'";

Oh My Posh Setup

oh-my-posh font install "CascadiaCode"

This is the profile addition to launch omp and enable theme.

oh-my-posh init pwsh --config "clean-detailed" | Invoke-Expression;

Helpful Powershell Modules

Install these individually, or comma-delimit them like this

Install-Module -Name PSReadLine, Az, SqlServer, DbaTools, posh-git, PSfzf -AllowClobber
Install-Module PSReadLine -AllowPrerelease -Force -SkipPublisherCheck

Profile additions you likely want to enable by including in your $Profile.

Import-Module PSReadLine
Import-Module posh-git