Some of you might remember that back in 2022, I switched from Atom to Sublime Text. I’ve been using Sublime Text ever since, but lately, it has become clear to me that its development has slowed to a crawl. Which is annoying, because some serious bugs that drive me crazy haven’t been fixed ever since I’ve been using it again. So I had to start looking for a new editor. And no, I still don’t want to use VS Code. It’s too slow, too clumsy and they’re leaning way too hard into this AI bullshit for my tastes. I like software that is small, lean and elegant. Which is why, after some experimentation in recent days, I have now settled on neovim. I am already familiar with Vim anyway, it’s cross-platform and does everything I need in a very efficient package.
Of course, it’s so customisable, that you’ll easily get lost in the weeds. So I settled on a few quickstart packages and things to get this new tool up and running in a way that is aesthetically pleasing to me and doesn’t take days of fiddling with config files. I installed AstroVim, which is a quickstart config that uses the LazyVim packaging system and only needs minimal tweaking to get it to look and behave to my liking. What follows is a quick-and-dirty guide at how to install AstroVim with my config.
Note:When nvim launches, the LazyVim package manager will install some stuff. Afterwards, reload nvim.
Configuration
Enable AstroCommunity in /nvim/lua/community.lua and configure plugins:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- AstroCommunity: import any community modules here-- We import this file in `lazy_setup.lua` before the `plugins/` folder.-- This guarantees that the specs are processed before any user plugins.---@type LazySpecreturn{"AstroNvim/astrocommunity",{import="astrocommunity.pack.lua"},-- import/override with your plugins folder-- my plugins{import="astrocommunity.bars-and-lines.lualine-nvim"},{import="astrocommunity.colorscheme.fluoromachine-nvim"},{import="astrocommunity.pack.markdown"},{import="astrocommunity.pack.lua"},{import="astrocommunity.recipes.auto-session-restore"},}
Enable the theme in /nvim/lua/plugins/astroui.lua:
-- AstroUI provides the basis for configuring the AstroNvim User Interface-- Configuration documentation can be found with `:h astroui`-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)-- as this provides autocomplete and documentation while editing---@type LazySpecreturn{"AstroNvim/astroui",---@type AstroUIOptsopts={-- change colorscheme-- colorscheme = "astrodark",colorscheme="fluoromachine",--[[
-- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
highlights = {
init = { -- this table overrides highlights in all themes
-- Normal = { bg = "#000000" },
},
astrodark = { -- a table of overrides/changes when applying the astrotheme theme
-- Normal = { bg = "#000000" },
},
},
-- Icons can be configured throughout the interface
icons = {
-- configure the loading of the lsp in the status line
LSPLoading1 = "⠋",
LSPLoading2 = "⠙",
LSPLoading3 = "⠹",
LSPLoading4 = "⠸",
LSPLoading5 = "⠼",
LSPLoading6 = "⠴",
LSPLoading7 = "⠦",
LSPLoading8 = "⠧",
LSPLoading9 = "⠇",
LSPLoading10 = "⠏",
},
]]--},}
And, lastly, customise Vim options in /nvim/lua/plugins/astrocore.lua:
-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!-- Configuration documentation can be found with `:h astrocore`-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)-- as this provides autocomplete and documentation while editing---@type LazySpecreturn{"AstroNvim/astrocore",---@type AstroCoreOptsopts={-- Configure core features of AstroNvimfeatures={large_buf={size=1024*256,lines=10000},-- set global limits for large files for disabling features like treesitterautopairs=true,-- enable autopairs at startcmp=true,-- enable completion at startdiagnostics_mode=3,-- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on)highlighturl=true,-- highlight URLs at startnotifications=true,-- enable notifications at start},-- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are ondiagnostics={virtual_text=true,underline=true,},-- vim options can be configured hereoptions={opt={-- vim.opt.<key>relativenumber=false,-- sets vim.opt.relativenumbernumber=true,-- sets vim.opt.numberspell=true,-- sets vim.opt.spellsigncolumn="yes",-- sets vim.opt.signcolumn to yeswrap=true,-- sets vim.opt.wrap},g={-- vim.g.<key>-- configure global vim variables (vim.g)-- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`-- This can be found in the `lua/lazy_setup.lua` file},},-- Mappings can be configured through AstroCore as well.-- NOTE: keycodes follow the casing in the vimdocs. For example, `<Leader>` must be capitalizedmappings={-- first key is the moden={-- second key is the lefthand side of the map-- navigate buffer tabs["]b"]={function()require("astrocore.buffer").nav(vim.v.count1)end,desc="Next buffer"},["[b"]={function()require("astrocore.buffer").nav(-vim.v.count1)end,desc="Previous buffer"},-- mappings seen under group name "Buffer"["<Leader>bd"]={function()require("astroui.status.heirline").buffer_picker(function(bufnr)require("astrocore.buffer").close(bufnr)end)end,desc="Close buffer from tabline",},-- tables with just a `desc` key will be registered with which-key if it's installed-- this is useful for naming menus-- ["<Leader>b"] = { desc = "Buffers" },-- setting a mapping to false will disable it-- ["<C-S>"] = false,},},},}
Bonus
On Windows, I use the following Terminal colour scheme to make the rest of the terminal match my editor setup: