neovim-config/lazy.md

2.2 KiB

Installing lazy

Lazy is one of packet managers for neovim, which is implemented and configured in lua. This snippet installs lazy via git cloning it to stdpath data from the github reposity. The path data specifies the neovim directory inside the directory specified by variable XDG_DATA_HOME, which defaults to $HOME/.local/share.

I.e the default directory is $HOME/.local/share/nvim.

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
-- lazy.nvim installieren (falls nicht vorhanden)
if not (vim.uv or vim.loop).fs_stat(lazypath) then
	local lazyrepo = "https://github.com/folke/lazy.nvim.git"
	local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
	if vim.v.shell_error ~= 0 then
		vim.api.nvim_echo({
			{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
			{ out, "WarningMsg" },
			{ "\nPress any key to exit..." },
		}, true, {})
		vim.fn.getchar()
		os.exit(1)
	end
end
-- Add lazy.nvim directory to the path lua path.
vim.opt.rtp:prepend(lazypath)

Sourcing plugins

When adding following line:

require("lazy").setup("plugins")

Lazy will source all lua files found in the source directory plugins.

The neovim config folder is: $XDG_CONFIG_HOME/nvim/, where XDG_CONFIG_HOME defaults to $HOME/.config/. I.e. the resulting directory which should exist is: $HOME/.config/nvim/lua/plugins.

For simplicity each file in the directory should contain only one plugin.

Adding plugins

Adding plugins is simple. Usually there is a example on the github page. But with this approach you need to add a return in front of the object and store the the into a new file. For example:

return {
        "NeogitOrg/neogit",
        dependencies = {
            "nvim-lua/plenary.nvim",         -- required
            "sindrets/diffview.nvim",        -- optional - Diff integration

            -- Only one of these is needed.
            "nvim-telescope/telescope.nvim", -- optional
            "ibhagwan/fzf-lua",              -- optional
            "echasnovski/mini.pick",         -- optional
        },
    };

This will return the shown object.

For further explanation and documentation consult the documentation of lazy.