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.
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
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
|