Terminal Setup

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.

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

winget Manifest

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
    "$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

1
winget install Microsoft.Powershell

git

1
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

1
2
3
winget install neovim
winget install bat --source winget
winget install OpenJS.NodeJS
Neovim Configurations

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

1
2
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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
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

fzf

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

1
2
3
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

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

Oh My Posh Setup

1
oh-my-posh font install "CascadiaCode"

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

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

Helpful Powershell Modules

Install these individually, or comma-delimit them like this

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

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

1
2
Import-Module PSReadLine
Import-Module posh-git
Built with Hugo
Theme Stack designed by Jimmy