Neovim Lua

Updated: 10 November 2024

~/.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)

Neovim Intelephense

Updated: 03 November 2024

Notes to assist with config and use of the Intelephense PHP LSP:

Neovim LSP log file: ~/.local/state/nvim/lsp.log

https://intelephense.com/

Install on your system npm install -g intelephense but is probably installed by Mason anyway.

See here: ./.local/share/nvim/mason/packages/intelephense/node_modules/intelephense

The root of a PHP project is identified by a .git folder or a composer.json file.

nvim-lspconfig intelephense docs

https://github.com/bmewburn

Perhaps an alternative to Intelephense https://github.com/phpactor/phpactor

Intelephense and Intelephense docs on GitHub https://github.com/bmewburn

Buying a Licence makes most of the LSP warnings disappear!

Try running command :LspInfo

Neovim auto commands

Updated: 25 March 2024

Flash yanked text

autocmd("TextYankPost", {
    pattern = "*",
    desc = "Highlight text on yank.",
    callback = function ()
        vim.highlight.on_yank { higroup = "Search", timeout = 150 }
    end,
})

Neovim

Updated: 08 April 2024

Light themes

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

Error reading ShaDa

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

Swap files

Delete all swap files

rm -rf ~/.local/state/nvim/swap/*

Start cli arguments

Mimics a fresh install of Nvim

nvim --clean

Lunarvim

Updated: 11 March 2024

Notes

  • Configuration ~/.config/lvim/config.lua
  • On my system, plugins directories are in ~/.local/share/lunarvim/site/pack/lazy/opt
  • To turn off ShellCheck warnings in .env files, place at the top # shellcheck disable=SC2034

Keybindings

Toggle 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

Neovim app image

Updated: 21 March 2024

How to install Neovim, from the App Image, on Ubuntu.

  1. Pick a stable release https://github.com/neovim/neovim/releases/tag/stable
  2. Download the nvim.appimage asset.
  3. Run chmod u+x nvim.appimage to make the nvim.appimage file executable.
  4. Start the neovim editor with ./nvim.appimage.
  5. If your system indicates that FUSE is missing, it can be installed (for Ubuntu >= 22.04) with sudo apt install libfuse2.
  6. Rename the executable and put it in a location on your PATH e.g. mv nvim.appimage /home/chris/.local/bin/nvim or sudo mv nvim.appimage /usr/bin/nvim
  7. Now start the neovim editor with nvim