Updated: 19 October 2026
Place .markdownlint-cli2.json in the project root
{
"MD013": {
"line_length": 120,
"code_blocks": false,
"tables": false
}
}
Freelance software engineer United Kingdom
Updated: 19 October 2026
Place .markdownlint-cli2.json in the project root
{
"MD013": {
"line_length": 120,
"code_blocks": false,
"tables": false
}
}
Updated: 28 June 2026
See https://lazy.folke.io/spec for details on specifying a plugin for loading by lazy.nvim .
:LazyRoot show set of directories Lazy considers to be a root e.g. cwd root, lsp root, .git / lua root.<Leader>e open explorer at the root directory (see :LazyRoot).<Leader>E open explorer at the current working directory.:NoiceAll show the Noice plugin history of messages, notices, and logs.Undo the LazyVim re-mappings of k -> gk and j -> gj
vim.keymap.del({ "n", "x" }, "k")
vim.keymap.del({ "n", "x" }, "j")
Show full diagnostic message
<C-W>d
Updated: 24 September 2025
Working directory of current window
:lua print(vim.fn.getcwd(0, 0))
Get current window number
:lua print(vim.api.nvim_get_current_win())
Get current tabpage number
:lua print(vim.api.nvim_get_current_tabpage())
This might be how it works:
Also see :help tcd
Updated: 25 November 2024
Help
https://neovim.discourse.group/
https://github.com/neovim/neovim/discussions
Guide to using Lua in Nvim https://neovim.io/doc/user/lua-guide.html
~/.config/nvim/init.lua
-- Level 1 the function
function Foo() print 'bar' end
-- :lua Foo()
-- Level 2 user command using the function
vim.api.nvim_create_user_command('Foo', Foo, {})
-- :Foo
-- Level 3 function invoked by an event
vim.api.nvim_create_autocmd('TextYankPost', { callback = Foo })
-- try yanking some text
-- Level 4 map our function to a keyboard sequence
vim.keymap.set('n', 'xy', Foo)
Updated: 23 October 2025
~/.local/state/nvim/lsp.lognpm install -g intelephense but is probably installed by Mason anyway../.local/share/nvim/mason/packages/intelephense/node_modules/intelephense.git folder or a composer.json file.:LspInfoUpdated: 21 September 2024
Per project configuration. A starting point:
:help dap.ext.vscode.load_launchjs
Updated: 27 October 2025
The neovim kickstart project on GitHub https://github.com/nvim-lua/kickstart.nvim
My own neovim config, which is based on kickstart.nvim https://github.com/ChrisTaylorDeveloper/kickstart.nvim
Updated: 04 July 2025
Flash yanked text
autocmd("TextYankPost", {
pattern = "*",
desc = "Highlight text on yank.",
callback = function ()
vim.highlight.on_yank { higroup = "Search", timeout = 150 }
end,
})
Set syntax highlighting for /etc/hosts file
vim.api.nvim_create_autocmd('BufRead', {
pattern = '/etc/hosts',
desc = 'Set syntax highlighting for /etc/hosts file.',
callback = function()
-- Only the 'bash' filetype seems to work!
vim.opt.filetype = 'bash'
end,
})
Updated: 18 October 2025
Some popular themes with a light variant.
| GitHub stars Feb 24 | Repository |
|---|---|
| 4.8K | https://github.com/folke/tokyonight.nvim |
| 3.3K | https://github.com/rebelot/kanagawa.nvim |
| 4.3K | https://github.com/catppuccin/nvim |
| 582 | https://github.com/Mofiqul/vscode.nvim |
| 1.9K | https://github.com/projekt0n/github-nvim-theme |
Resolution of Error while reading ShaDa file: there is an item at position …
Find all ShaDa related directories and files
find ~ -iname '*shada*'
Example list of folders returned by the find command above
/home/chris/.local/state/lvim/shada/
/home/chris/.local/state/nvim/shada/
/home/chris/.local/share/nvim/shada/
/home/chris/.cache/lvim/
Delete all shada files in these directories.
rm -rf ~/.local/state/lvim/shada
rm -rf ~/.local/state/nvim/shada
rm -rf ~/.local/share/nvim/shada
rm -rf ~/.cache/lvim
Delete all swap files
rm -rf ~/.local/state/nvim/swap/*
Mimics a fresh install of Nvim. “Factory defaults”, skip user config, plugins and shada
nvim --clean
Cause Nvim to look for configuration files in ~/.config/nvimfoo instead of ~/.config/nvim. Useful for experimenting with multiple Neovim configurations on the same system. See here for a potentially better strategy on Linux, using cgroups namespaces.
NVIM_APPNAME=nvimfoo nvim
Write all your keymaps to file (credit)
:redir > key_maps.txt | map | redir END
Updated: 11 March 2024
~/.config/lvim/config.lua~/.local/share/lunarvim/site/pack/lazy/opt# shellcheck disable=SC2034Toggle spelling on/off with a function:
lvim.keys.normal_mode["<leader>sp"] = function()
if (true == vim.opt.spell:get()) then
vim.opt.spell = false
print("spell = false")
else
vim.opt.spell = true
vim.opt.spelllang = "en_gb"
print("spell = true")
end
end
Resize splits with number keys:
lvim.keys.normal_mode["<A-8>"] = ":resize -1<CR>"
lvim.keys.normal_mode["<A-9>"] = ":resize +1<CR>"
lvim.keys.normal_mode["<A-7>"] = ":vertical resize -1<CR>"
lvim.keys.normal_mode["<A-0>"] = ":vertical resize +1<CR>"
Quick reference
| Toggle floating terminal | <C-\> |
| Show definition | K |
| Clear cache whilst running | :LvimCacheReset |
| Clear cache at startup | lvim +LvimCacheReset |