Neovim IDE setup - vsheo/only-arch GitHub Wiki

NEOVIM IDE setup

deze wiki is een samenvatting van deze video

The init.lua file

Als eerst moeten we neovim downloaden:

sudo pacman -S neovim

om dit te grbuiken kan je in je terminal nvim typen + enter, en je bent in neovim

:q + enter om eruit te gaan

in lua kan je je configuration maken voor neovim, daarvoor heb je een init.lua file nodig. dit maken we hier aan:

mkdir ~/.config/nvim
nvim ~/.config/nvim/init.lua

de rede voor deze file path is, dat neovim vanzelf hier gaat zoeken voor configuration files

nvim zorgt vanzelf ervoor dat de file gemaakt wordt.

save deze file met :w + enter (write)

in init.lua schijven we:

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

wat tussen de "" staat is een vim command. wat erom heen staat zorgt ervoor dat lua weet hoe het uitgevoerd moet worden.

daarna

:source %

source: laadt en voert het huidige bestand uit als een configuratie- of scriptbestand %: betekent het huidige geopende bestand

Lazy.vim

nu hebben we de basic setup. nu hebben we een package manager nodig voor neovim ik zal lazy.nvim gebruiken.

hiervoor hebben we een code snippet nodig in onze init.lua file, die kunnen we hier vinden:

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
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
vim.opt.rtp:prepend(lazypath)

local plugins = {}
local opts = {}

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

als we dit uitvoeren:

:source %

dan kunnen we nu gebruik maken van de Lazy command:

:Lazy

nu hebben we de Lazy GUI op scherm.

het maakt nu gebruik van de standaard color scheme, die niet past bij de rest van onze setup.

Color scheme

voor de kleuren zullen we gebruik maken van catppuccin voor neovim

Bij instalation hebben ze zelfs een section voor lazy.nvim

Hiermee kunnen we terug naar onze init.lua file gaan, en deze regel toevoegen aan local plugins. Dit zorgt ervoor dat catppuccin gedownload wordt:

local plugins = {
    {"catppuccin/nvim", name = "catppuccin", priority = 1000}
}

we moeten nu ervoor zorgen dat neovim de catppuccin kleuren gebruikt:

require("catppuccin").setup()
vim.cmd.colorscheme "catppuccin"

write :w en quit :q en open de file opnieuw, nu zou je de catppuccin kleuren moeten zien in neovim

Telescope

Telescope.nvim Telescope is een extendable fuzzy finder voor lists. Gebouwd op de nieuwste geweldige functies van de Neovim-core. Telescope draait om modulariteit, waardoor het makkelijk aan te passen is.

Bij instalatie is er ook eentje speciaal voor lazy.nvim

    {
    'nvim-telescope/telescope.nvim', tag = '0.1.8',
-- or                              , branch = '0.1.x',
      dependencies = { 'nvim-lua/plenary.nvim' }
    }

dit kunnen we toevoegen aan onze plugins

local plugins = {
    {"catppuccin/nvim", name = "catppuccin", priority = 1000},
    {
        'nvim-telescope/telescope.nvim', tag = '0.1.8',
        dependencies = { 'nvim-lua/plenary.nvim' }
    }
}

als je neovim sluit en opnieuw open maakt (door een file te openen) dan zal het telescope instaleren

nu is het geinstaleerd maar we kunnen het nog niet gebruiken omdat het nog initialized moet worden:

voeg daarvoor deze regel toe (onder require("lazy")):

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

local builtin = require("telescope.builtin")
vim.keymap.set('n', '<C-p>', builtin.find_files, {})

: ctrl + p om telescope te gebruiken om naar files te zoeken

we kunnen nu ook live grep toevoegen:

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

local builtin = require("telescope.builtin")
vim.keymap.set('n', '<C-p>', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})

fg: deze moeten we nog instellen

bovenaan de file, onder de vim.cmd commands:

vim.g.mapleader = " "

dit zet <leader>fg op spatie

:source % deze file

nu als je space > f > g na elkaar indrukt dan open je live grep

  • find_files: Zoekt bestanden
  • live_grep: Zoekt tekst in bestanden, maar door alle bestanden in je map

dit zijn 2 functies van telescope er zijn veel meer

Treesitter

Treesitter zorgt ervoor dat Neovim de structuur van je code begrijpt, wat leidt tot betere syntax highlighting, slim navigeren, en krachtige code-analyse

hier staat hoe we treesitter kunne downloaden voor lazy.nvim

local plugins = {
    {"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"}
}

Daarna:

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

local builtin = require("telescope.builtin")
vim.keymap.set('n', '<C-p>', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})

local config = require("nvim-treesitter.configs")
config.setup({
    ensure_installed = {"lua", "javascript"},
    highlight = {enable = true},
    indent = {enable = true}
})

ensure_installed: zorgt ervoor dat de parser voor deze programeer talen geinstaleerd is
hier kan je al je programeer talen aangeven.

en ook zeggen wat je treesitter wilt laten doen.
hier geven we aan dat we indents en highlight willen hebben

:source % save en sluit de file, als je neovim opent dan is treesitter active

final init.lua:

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

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
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
vim.opt.rtp:prepend(lazypath)

local plugins = {
    {"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"}
}
local opts = {}

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

local builtin = require("telescope.builtin")
vim.keymap.set('n', '<C-p>', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})

local config = require("nvim-treesitter.configs")
config.setup({
    ensure_installed = {"lua", "javascript"},
    highlight = {enable = true},
    indent = {enable = true}
})

require("catppuccin").setup()
vim.cmd.colorscheme "catppuccin"
⚠️ **GitHub.com Fallback** ⚠️