Neovim IDE setup - vsheo/only-arch GitHub Wiki
deze wiki is een samenvatting van deze video
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
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.
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.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 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"