ajout config maison basé sur tuto : vincent jousse
parent
313bbe7796
commit
3ab37f0fe9
|
|
@ -1,5 +1,2 @@
|
|||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||
require("core")
|
||||
require("config.lazy")
|
||||
|
||||
vim.g.autoformat = false -- globally
|
||||
vim.b.autoformat = false -- buffer-local
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
|
||||
"bufferline.nvim": { "branch": "main", "commit": "2e3c8cc5a57ddd32f1edd2ffd2ccb10c09421f6c" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
|
||||
"cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "00ba9dd3df89509f95437b8d595553707c46d5ea" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "863903631e676b33e8be2acb17512fdc1b80b4fb" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "460e1cd8f24e364d54543a4b0e83f6f4ec1f65fb" },
|
||||
"lspkind.nvim": { "branch": "master", "commit": "59c3f419af48a2ffb2320cea85e44e5a95f71664" },
|
||||
"nord.nvim": { "branch": "master", "commit": "80c1e5321505aeb22b7a9f23eb82f1e193c12470" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "e7cdecc6363acef8232f2f099fe21096ffdc071f" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "f027762845fa35ff27fe0487c86537a74a480a0c" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "26220156aafb198b2de6a4cf80c1b120a3768da0" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" },
|
||||
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "fb070344402cfc662299d9914f5546d840a22126" }
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
-- Mise en place et installation de lazy.nvim
|
||||
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)
|
||||
|
||||
-- Configuration de lazy.nvim et importation du répertoire `plugins`
|
||||
require("lazy").setup({ { import = "plugins" } }, {
|
||||
-- désactive la pénible notification au démarrage
|
||||
change_detection = {
|
||||
notify = false,
|
||||
},
|
||||
})
|
||||
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
require("core.options")
|
||||
require("core.keymaps")
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
-- On définit notre touche leader sur espace
|
||||
vim.g.mapleader = " "
|
||||
|
||||
-- Raccourci pour la fonction set
|
||||
local keymap = vim.keymap.set
|
||||
|
||||
-- on utilise ;; pour sortir du monde insertion
|
||||
keymap("i", "jj", "<ESC>", { desc = "Sortir du mode insertion avec jj" })
|
||||
keymap("i", "kk", "<ESC>", { desc = "Sortir du mode insertion avec kk" })
|
||||
|
||||
-- on efface le surlignage de la recherche
|
||||
keymap("n", "<leader>nh", ":nohl<CR>", { desc = "Effacer le surlignage de la recherche" })
|
||||
|
||||
-- Changement de fenêtre avec Ctrl + déplacement uniquement au lieu de Ctrl-w + déplacement
|
||||
keymap("n", "<C-h>", "<C-w>h", { desc = "Déplace le curseur dans la fenêtre de gauche" })
|
||||
keymap("n", "<C-j>", "<C-w>j", { desc = "Déplace le curseur dans la fenêtre du bas" })
|
||||
keymap("n", "<C-k>", "<C-w>k", { desc = "Déplace le curseur dans la fenêtre du haut" })
|
||||
keymap("n", "<C-l>", "<C-w>l", { desc = "Déplace le curseur dans la fenêtre droite" })
|
||||
|
||||
-- Navigation entre les buffers
|
||||
keymap("n", "<S-l>", ":bnext<CR>", opts)
|
||||
keymap("n", "<S-h>", ":bprevious<CR>", opts)
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
-- https://vincent.jousse.org/blog/fr/tech/configurer-neovim-comme-ide-a-partir-de-zero-tutoriel-guide/#cerise-sur-le-g%C3%A2teau-ou-plugin-de-trop-noicenvim-une-interface-repens%C3%A9e
|
||||
local opt = vim.opt -- raccourci pour un peu plus de concision
|
||||
|
||||
-- numéros de ligne
|
||||
opt.relativenumber = true -- affichage des numéros de ligne relatives à la position actuelle du curseur
|
||||
opt.number = true -- affiche le numéro absolu de la ligne active lorsque que relativenumber est activé
|
||||
|
||||
-- souris j'aime pas.
|
||||
opt.mouse = "" -- désactive la souris
|
||||
|
||||
-- tabs & indentation
|
||||
opt.tabstop = 4 -- 4 espaces pour les tabulations
|
||||
opt.shiftwidth = 4 -- 4 espaces pour la taille des indentations
|
||||
opt.expandtab = true -- change les tabulations en espaces (don't feed the troll please ;) )
|
||||
opt.autoindent = true -- on garde l'indentation actuelle à la prochaine ligne
|
||||
|
||||
-- recherche
|
||||
opt.ignorecase = true -- ignore la casse quand on recherche
|
||||
opt.smartcase = true -- sauf quand on fait une recherche avec des majuscules, on rebascule en sensible à la casse
|
||||
opt.hlsearch = true -- surlignage de toutes les occurences de la recherche en cours
|
||||
|
||||
-- ligne du curseur
|
||||
opt.cursorline = true -- surlignage de la ligne active
|
||||
|
||||
-- apparence
|
||||
|
||||
-- termguicolors est nécessaire pour que les thèmes modernes fonctionnent
|
||||
opt.termguicolors = true
|
||||
opt.background = "dark" -- dark ou light en fonction de votre préférence
|
||||
opt.signcolumn = "yes" -- affiche une colonne en plus à gauche pour afficher les signes (évite de décaler le texte)
|
||||
|
||||
-- retour
|
||||
opt.backspace = "indent,eol,start" -- on autorise l'utilisation de retour quand on indente, à la fin de ligne ou au début
|
||||
|
||||
-- presse papier
|
||||
opt.clipboard = "unnamedplus" -- on utilise le presse papier du système par défaut
|
||||
|
||||
-- split des fenêtres
|
||||
opt.splitright = true -- le split vertical d'une fenêtre s'affiche à droite
|
||||
opt.splitbelow = true -- le split horizontal d'une fenêtre s'affiche en bas
|
||||
|
||||
opt.swapfile = false -- on supprime le pénible fichier de swap
|
||||
|
||||
opt.undofile = true -- on autorise l'undo à l'infini (même quand on revient sur un fichier qu'on avait fermé)
|
||||
|
||||
opt.iskeyword:append("-") -- on traite les mots avec des - comme un seul mot
|
||||
|
||||
-- affichage des caractères spéciaux
|
||||
opt.list = true
|
||||
opt.listchars:append({ nbsp = "␣", trail = "•", precedes = "«", extends = "»", tab = "> " })
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
return {
|
||||
"akinsho/bufferline.nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
version = "*",
|
||||
opts = {
|
||||
options = {
|
||||
separator_style = "slant",
|
||||
offsets = { { filetype = "NvimTree", text = "", padding = 1 } },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
return {
|
||||
"lewis6991/gitsigns.nvim",
|
||||
event = { "BufReadPre", "BufNewFile" },
|
||||
opts = {
|
||||
|
||||
signs = {
|
||||
add = { text = "▎" },
|
||||
change = { text = "▎" },
|
||||
changedelete = { text = "▎" },
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
local gs = package.loaded.gitsigns
|
||||
|
||||
local function map(mode, l, r, desc)
|
||||
vim.keymap.set(mode, l, r, { buffer = bufnr, desc = desc })
|
||||
end
|
||||
|
||||
-- Navigation
|
||||
map("n", "]h", gs.next_hunk, "Next Hunk")
|
||||
map("n", "[h", gs.prev_hunk, "Prev Hunk")
|
||||
|
||||
-- Actions
|
||||
map("n", "<leader>hs", gs.stage_hunk, "Stage hunk")
|
||||
map("n", "<leader>hr", gs.reset_hunk, "Reset hunk")
|
||||
map("v", "<leader>hs", function()
|
||||
gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||
end, "Stage hunk")
|
||||
map("v", "<leader>hr", function()
|
||||
gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||
end, "Reset hunk")
|
||||
|
||||
map("n", "<leader>hS", gs.stage_buffer, "Stage buffer")
|
||||
map("n", "<leader>hR", gs.reset_buffer, "Reset buffer")
|
||||
|
||||
map("n", "<leader>hu", gs.undo_stage_hunk, "Undo stage hunk")
|
||||
|
||||
map("n", "<leader>hp", gs.preview_hunk, "Preview hunk")
|
||||
|
||||
map("n", "<leader>hb", function()
|
||||
gs.blame_line({ full = true })
|
||||
end, "Blame line")
|
||||
map("n", "<leader>hB", gs.toggle_current_line_blame, "Toggle line blame")
|
||||
|
||||
map("n", "<leader>hd", gs.diffthis, "Diff this")
|
||||
map("n", "<leader>hD", function()
|
||||
gs.diffthis("~")
|
||||
end, "Diff this ~")
|
||||
|
||||
-- Text object
|
||||
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "Gitsigns select hunk")
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
"nvim-lua/plenary.nvim", -- ensemble de fonctions lua utilisées par de nombreux plugins
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
return {
|
||||
"shaunsingh/nord.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {},
|
||||
config = function()
|
||||
-- chargement du thème
|
||||
vim.cmd([[colorscheme nord]])
|
||||
end,
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
return {
|
||||
"hrsh7th/nvim-cmp",
|
||||
event = { "InsertEnter", "CmdlineEnter" },
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-buffer", -- source pour compléter le texte déjà présent dans le buffer
|
||||
"hrsh7th/cmp-path", -- source pour compléter les chemins des fichiers
|
||||
"hrsh7th/cmp-cmdline", -- source pour les completions de la cmdline de vim
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
-- follow latest release.
|
||||
version = "v2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
|
||||
-- install jsregexp (optional!).
|
||||
build = "make install_jsregexp",
|
||||
},
|
||||
"saadparwaiz1/cmp_luasnip", -- ajoute LuaSnip à l'autocompletion
|
||||
"rafamadriz/friendly-snippets", -- collection de snippets pratiques
|
||||
"hrsh7th/cmp-emoji", -- complétion d'émojis à la saisie de :
|
||||
"onsails/lspkind.nvim", -- vs-code pictogrammes
|
||||
},
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
|
||||
local luasnip = require("luasnip")
|
||||
|
||||
local lspkind = require("lspkind")
|
||||
|
||||
-- chargement des snippets (e.g. friendly-snippets)
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
completion = {
|
||||
completeopt = "menu,menuone,preview,noselect",
|
||||
},
|
||||
snippet = { -- on utilise luasnip comme moteur de snippets
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = {
|
||||
["<C-k>"] = cmp.mapping.select_prev_item(),
|
||||
["<C-j>"] = cmp.mapping.select_next_item(),
|
||||
["<C-b>"] = cmp.mapping.scroll_docs(-1),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(1),
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-e>"] = cmp.mapping.abort(),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }), -- Accepte la sélection courante. Mettre à `false` pour ne confirmer que les items explicitement sélectionnés
|
||||
},
|
||||
|
||||
-- sources pour l'autocompletion
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lua" },
|
||||
{ name = "luasnip" }, -- snippets
|
||||
{ name = "buffer" }, -- texte du buffer courant
|
||||
{ name = "path" }, -- chemins dy système de fichier
|
||||
{ name = "emoji" }, -- emojis
|
||||
}),
|
||||
|
||||
formatting = {
|
||||
-- Comportement par défaut
|
||||
expandable_indicator = true,
|
||||
-- Champs affichés par défaut
|
||||
fields = { "abbr", "kind", "menu" },
|
||||
format = lspkind.cmp_format({
|
||||
mode = "symbol_text",
|
||||
-- On suffixe chaque entrée par son type
|
||||
menu = {
|
||||
buffer = "[Buffer]",
|
||||
luasnip = "[LuaSnip]",
|
||||
nvim_lua = "[Lua]",
|
||||
path = "[Path]",
|
||||
emoji = "[Emoji]",
|
||||
},
|
||||
}),
|
||||
},
|
||||
})
|
||||
|
||||
-- `/` complétion
|
||||
cmp.setup.cmdline("/", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {
|
||||
{ name = "buffer" },
|
||||
},
|
||||
})
|
||||
|
||||
-- `:` complétion
|
||||
cmp.setup.cmdline(":", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{ name = "path" },
|
||||
}, {
|
||||
{
|
||||
name = "cmdline",
|
||||
option = {
|
||||
ignore_cmds = { "Man", "!" },
|
||||
},
|
||||
},
|
||||
}),
|
||||
})
|
||||
|
||||
end,
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
return {
|
||||
"nvim-tree/nvim-tree.lua",
|
||||
version = "*",
|
||||
lazy = false,
|
||||
dependencies = {
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
config = function()
|
||||
require("nvim-tree").setup({})
|
||||
|
||||
-- On utilise <leader>e pour ouvrir/fermer l'explorateur
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>e",
|
||||
"<cmd>NvimTreeFindFileToggle<CR>",
|
||||
{ desc = "Ouverture/fermeture de l'explorateur de fichiers" }
|
||||
)
|
||||
end,
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
return {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
branch = "0.1.x",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
-- fzf implémentation en C pour plus de rapidité
|
||||
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
},
|
||||
config = function()
|
||||
local telescope = require("telescope")
|
||||
local actions = require("telescope.actions")
|
||||
|
||||
telescope.setup({
|
||||
defaults = {
|
||||
|
||||
-- Parce que c'est joli
|
||||
--prompt_prefix = " ",
|
||||
--selection_caret = " ",
|
||||
path_display = { "smart" },
|
||||
file_ignore_patterns = { ".git/", "node_modules" },
|
||||
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-j>"] = actions.move_selection_next,
|
||||
["<C-k>"] = actions.move_selection_previous,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
telescope.load_extension("fzf")
|
||||
|
||||
-- set keymaps
|
||||
local keymap = vim.keymap -- for conciseness
|
||||
|
||||
keymap.set( "n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "Recherche de chaînes de caractères dans les noms de fichiers" })
|
||||
keymap.set( "n", "<leader>fg", "<cmd>Telescope live_grep<cr>", { desc = "Recherche de chaînes de caractères dans le contenu des fichiers" })
|
||||
keymap.set( "n", "<leader>fb", "<cmd>Telescope buffers<cr>", { desc = "Recherche de chaînes de caractères dans les noms de buffers" })
|
||||
keymap.set( "n", "<leader>fx", "<cmd>Telescope grep_string<cr>", { desc = "Recherche de la chaîne de caractères sous le curseur" })
|
||||
end,
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
config = function()
|
||||
local treesitter = require("nvim-treesitter.configs")
|
||||
|
||||
-- configuration de treesitter
|
||||
treesitter.setup({
|
||||
-- activation de la coloration syntaxique
|
||||
highlight = {
|
||||
enable = true,
|
||||
},
|
||||
-- activation de l'indentation améliorée
|
||||
indent = { enable = true },
|
||||
|
||||
-- langages installés et configurés
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"dockerfile",
|
||||
"gitignore",
|
||||
"html",
|
||||
"javascript",
|
||||
"json",
|
||||
"lua",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"python",
|
||||
"rst",
|
||||
"rust",
|
||||
"typescript",
|
||||
"vim",
|
||||
"yaml",
|
||||
},
|
||||
-- lorse de l'appui sur <Ctrl-space> sélectionne le bloc
|
||||
-- courant spécifique au langage de programmation
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "<C-space>",
|
||||
node_incremental = "<C-space>",
|
||||
scope_incremental = false,
|
||||
node_decremental = "<bs>",
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
return {
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
"<leader>?",
|
||||
function()
|
||||
require("which-key").show({ global = true })
|
||||
end,
|
||||
desc = "Buffer Local Keymaps (which-key)",
|
||||
},
|
||||
},
|
||||
}
|
||||
Loading…
Reference in New Issue