Modularized neovim setup - vsheo/only-arch GitHub Wiki

Modularized neovim setup

Deze wiki is een samenvatting van deze video

Install neo-tree

Neo-tree laat je een file explorer aan de zijkant van Neovim openen om files, git status of buffers te bekijken en te beheren.

Downloaden is hetzelfde als wat we in de vorige samenvatting hebben gedaan neo-tree download:

{
  "nvim-neo-tree/neo-tree.nvim",
  branch = "v3.x",
  dependencies = {
    "nvim-lua/plenary.nvim",
    "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
    "MunifTanjim/nui.nvim",
    -- {"3rd/image.nvim", opts = {}}, -- Optional image support in preview window: See `# Preview Mode` for more information
  },
  lazy = false, -- neo-tree will lazily load itself
  ---@module "neo-tree"
  ---@type neotree.Config?
  opts = {
    -- fill any relevant options here
  },
}

dit toevoegen aan local plugins = {}

nu kunnen we met deze command de file tree op scherm brengen: :Neotree filesystem reveal right

dit kunnen we aan een keymap koppelen:

vim.keymap.set('n', '<C-n>', ':Neotree filesystem reveal right<CR>', {})

nadat we neovim opnieuw openen kunnen we met Ctrl + n de filesystem openen

init.lua to plugins.lua

in deze directory/file ~/.config/nvim/lua/plugins.lua kan je al je plugins bewaren (alles dat je in local plugins geschreven had):

return {
    {"catppuccin/nvim", name = "catppuccin", priority = 1000},
    {
        'nvim-telescope/telescope.nvim', tag = '0.1.8',
        dependencies = { 'nvim-lua/plenary.nvim' }
    },
    {"nvim-treesitter/nvim-treesitter", branch = 'master', lazy = false, build = ":TSUpdate"},
    {
        "nvim-neo-tree/neo-tree.nvim",
        branch = "v3.x",
        dependencies = {
            "nvim-lua/plenary.nvim",
            "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
            "MunifTanjim/nui.nvim",
            -- {"3rd/image.nvim", opts = {}}, -- Optional image support in preview window: See `# Preview Mode` for more information
        },
        lazy = false, -- neo-tree will lazily load itself
        ---@module "neo-tree"
        ---@type neotree.Config?
        opts = {
            -- fill any relevant options here
        },
    }
}

in init.lua kan je deze regel require("lazy").setup(plugins, opts) veranderen naar:

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

modularize config

Als je je bestanden structureert zoals Lazy verwacht, kun je een map hebben met daarin al je plugins, één plugin per file. Zolang elk bestand een Lua table returned, zal Lazy automatisch al die tables samenvoegen voor jouw setup

de directory waar lazy naar zoekt is: ~/.config/nvim/lua/plugins/<br> met daarin als je plugins als lua` files

de lua files hierin zullen zo eruit zien

catppuccin.lua:

return {
  {
    "catppuccin/nvim",
    lazy = false,
    name = "catppuccin",
    priority = 1000,
    config = function()
      vim.cmd.colorscheme "catppuccin-mocha"
    end
  }
}

de config = function() regel voert dit uit:
require("catppuccin-mocha").setup()

hiermee hebben we dus alles om catppucin op te zetten in 1 file

telescope.lua:

return {
  {
    "nvim-telescope/telescope-ui-select.nvim",
  },
  {
    "nvim-telescope/telescope.nvim",
    tag = "0.1.5",
    dependencies = { "nvim-lua/plenary.nvim" },
    config = function()
      require("telescope").setup({
        extensions = {
          ["ui-select"] = {
            require("telescope.themes").get_dropdown({}),
          },
        },
      })
      local builtin = require("telescope.builtin")
      vim.keymap.set("n", "<C-p>", builtin.find_files, {})
      vim.keymap.set("n", "<leader>fg", builtin.live_grep, {})
      vim.keymap.set("n", "<leader><leader>", builtin.oldfiles, {})

      require("telescope").load_extension("ui-select")
    end,
  },
}

config = function () maakt hier nu alle keymaps die we gebruiken.

treesitter.lua:

return {
  {
    "nvim-treesitter/nvim-treesitter",
    build = ":TSUpdate",
    config = function()
      local config = require("nvim-treesitter.configs")
      config.setup({
        auto_install = true,
        highlight = { enable = true },
        indent = { enable = true },
      })
    end
  }
}

neo-tree.lua:

return {
	"nvim-neo-tree/neo-tree.nvim",
	branch = "v3.x",
	dependencies = {
		"nvim-lua/plenary.nvim",
		"nvim-tree/nvim-web-devicons",
		"MunifTanjim/nui.nvim",
	},
	config = function()
		vim.keymap.set("n", "<C-n>", ":Neotree filesystem reveal left<CR>", {})
		vim.keymap.set("n", "<leader>bf", ":Neotree buffers reveal float<CR>", {})
	end,
}

vim-options.lua:

vim.cmd("set expandtab")
vim.cmd("set tabstop=4")
vim.cmd("set softtabstop=4")
vim.cmd("set shiftwidth=4")
vim.g.mapleader = " "

voor deze moeten we require toevoegen in init.lua require("vim-options")

je init.lua file ziet er dan zo uit:

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

require("vim-options")
require("lazy").setup("plugins")

Nu hebben we beter overzicht van al onze plugins. als we iets willen toeveogen, moeten we alleen een nieuw lua file maken met de download en config code

In deze github repo zijn er meer plugins te vinden

⚠️ **GitHub.com Fallback** ⚠️