I did a round of updates to my home box over past several weekends. It feels pretty good, and is almost comparable to my Linux based dev setup. Below are some notes for the curious terminal enthusiast.
Neovim
After postponing this one for years now1, I am so glad to finally take the
plunge. Native language server protocol integration is wonderful.
Similarly Lua feels tad faster2. Migration from vim was as easy as
sourcing the vimrc to start with.
I found nvy to be the perfect minimalist GUI for neovim. Supports
DirectWrite based text rendering with support for ligatures. Other alternatives
like the bundled neovim-qt are feature rich but the rendering was not up to my
liking.
Notes on plugins.
- Startup time for
nvimwas quite slow at ~400ms. tweekmonster/startuptime.vim helped profile and measure as I started trimming the plugins. vim-plugworks great. I didn’t consider changing it too much.- For LSP, replaced
Cocwith nvim-lspconfig and nvim-lsp-installer for managing LSP servers. - Replaced
alewith null-ls and trouble.nvim for linter integrations. - Tree sitter is amazing for syntax parsing and highlighting. Replace
vim-polyglotwith nvim-treesitter. Nerdtreewas a primary contributor to startup latency. Replaced with https://github.com/kyazdani42/nvim-tree.lua.
My configurations are in init.vim. For LSP related plugins, the configurations are lua based. See config.lua.
On Windows, neovim looks for init.vim in $env:AppData, a trick is to set
$env:XDG_CONFIG_HOME=~\.config\ and let neovim do all lookups there. This
also has the nice benefit of keeping the directory under source control.
Current startup time is ~250ms.
Where do you find these plugins? Neovimcraft is a great companion directory to Vim Awesome.
Wezterm
Wezterm replaces conemu for me. The biggest
selling point was the awesome configurability. And guess what it gives? A key
mapping that’s almost matching tmux.
I couldn’t have asked for anything more.
My configuration is in .wezterm.lua.
A good font
With all the nerdfont patch business, I struggled a bit to find a working version of patched Cascadia Code. Scoop has a nerdfont bucket, but it has older patched versions.
Well someone automated patching with Github Actions. And we have Delugia
Code. Delugia is my defacto in vim guifont and wezterm. Works amazingly
well.
More commandline awesomeness
I will end this post with five more amazing tools.
- If you’ve used ranger file manager in Linux, you’re going to love lf.
- bat is an amazing cross platform
catreplacement with syntax highlighting. Andfzfhas a great integration within vim.lfsupport is a nice add-on. - glow helps preview markdown on the terminal. Again comes with a nice nvim
integration via
glow.nvim. - autojump is
cdon steroids with fuzzy match. It’s a life saver. If you’re looking for powershell integration, look no further. - lazygit is on my todo list to try out. I’m hoping it will replace fugitive.vim for me. Let’s see.
Finally, scoop is the missing package manager for Windows. Highly
recommended for the pacman or yay fans.
See you all in 2022.
Footnotes
-
Don’t fix if it ain’t broken. And laziness of course. ↩
-
Subjective opinion. See https://github.com/vim/vim/issues/8606#issuecomment-884667566 for some numbers. ↩