feat(nvim): some devops stuff, additions and optimizations for nvim

This commit is contained in:
ITQ
2026-05-15 20:48:46 +03:00
parent b4e15131d1
commit 1273a6cd74
16 changed files with 334 additions and 142 deletions
-1
View File
@@ -3,4 +3,3 @@ require("config.keymaps")
require("config.autocmds") require("config.autocmds")
require("config.diagnostics") require("config.diagnostics")
require("config.lazy") require("config.lazy")
-1
View File
@@ -9,4 +9,3 @@ vim.api.nvim_create_autocmd("TextYankPost", {
}) })
-- optional: auto format on save (handled by conform too, but this is a safe place for extra logic later) -- optional: auto format on save (handled by conform too, but this is a safe place for extra logic later)
-1
View File
@@ -18,4 +18,3 @@ vim.diagnostic.config({
severity_sort = true, severity_sort = true,
float = { border = "rounded", source = "if_many" }, float = { border = "rounded", source = "if_many" },
}) })
+10
View File
@@ -20,3 +20,13 @@ map("n", "<leader>fg", "<cmd>Telescope live_grep<cr>", { desc = "Live grep" })
map("n", "<leader>fb", "<cmd>Telescope buffers<cr>", { desc = "Buffers" }) map("n", "<leader>fb", "<cmd>Telescope buffers<cr>", { desc = "Buffers" })
map("n", "<leader>fh", "<cmd>Telescope help_tags<cr>", { desc = "Help" }) map("n", "<leader>fh", "<cmd>Telescope help_tags<cr>", { desc = "Help" })
-- file tree
map("n", "<leader>tt", "<cmd>Neotree toggle<cr>", { desc = "Toggle file tree" })
map("n", "<leader>tf", "<cmd>Neotree reveal<cr>", { desc = "Reveal file in tree" })
-- Git
map("n", "<leader>gs", "<cmd>Git<cr>", { desc = "Git status" })
map("n", "<leader>gg", "<cmd>LazyGit<cr>", { desc = "LazyGit" })
map("n", "<leader>gd", "<cmd>DiffviewOpen<cr>", { desc = "Diffview open" })
map("n", "<leader>gD", "<cmd>DiffviewClose<cr>", { desc = "Diffview close" })
map("n", "<leader>gh", "<cmd>DiffviewFileHistory<cr>", { desc = "Diffview file history" })
-1
View File
@@ -19,4 +19,3 @@ require("lazy").setup({
checker = { enabled = true }, checker = { enabled = true },
ui = { border = "rounded" }, ui = { border = "rounded" },
}) })
+6 -1
View File
@@ -1,6 +1,12 @@
vim.g.mapleader = " " vim.g.mapleader = " "
vim.g.maplocalleader = " " vim.g.maplocalleader = " "
local mason_bin = vim.fn.stdpath("data") .. "/mason/bin"
local path = vim.env.PATH or ""
if not string.find(path, mason_bin, 1, true) then
vim.env.PATH = mason_bin .. ":" .. path
end
local opt = vim.opt local opt = vim.opt
opt.number = true opt.number = true
opt.relativenumber = true opt.relativenumber = true
@@ -28,4 +34,3 @@ opt.timeoutlen = 400
opt.clipboard = "unnamedplus" opt.clipboard = "unnamedplus"
opt.undofile = true opt.undofile = true
-1
View File
@@ -65,4 +65,3 @@ return {
end, end,
}, },
} }
+1 -3
View File
@@ -9,7 +9,5 @@ return {
{ "windwp/nvim-autopairs", event = "InsertEnter", opts = {} }, { "windwp/nvim-autopairs", event = "InsertEnter", opts = {} },
{ "lewis6991/gitsigns.nvim", event = "VeryLazy", opts = {} }, { "wakatime/vim-wakatime", lazy = false },
{ 'wakatime/vim-wakatime', lazy = false },
} }
+22
View File
@@ -0,0 +1,22 @@
return {
{
"towolf/vim-helm",
lazy = false,
},
{
"hashivim/vim-terraform",
ft = { "terraform", "hcl" },
},
{
"ekalinin/Dockerfile.vim",
ft = { "dockerfile" },
},
{
"pearofducks/ansible-vim",
lazy = false,
},
{
"b0o/schemastore.nvim",
lazy = true,
},
}
+22
View File
@@ -0,0 +1,22 @@
return {
{
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
cmd = "Neotree",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
opts = {
sources = { "filesystem", "buffers", "git_status" },
close_if_last_window = true,
filesystem = {
follow_current_file = { enabled = true },
hijack_netrw_behavior = "open_default",
use_libuv_file_watcher = true,
},
window = { width = 32 },
},
},
}
+48
View File
@@ -0,0 +1,48 @@
return {
{
"lewis6991/gitsigns.nvim",
event = { "BufReadPre", "BufNewFile" },
opts = {
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local map = function(mode, lhs, rhs, desc)
vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, desc = desc })
end
map("n", "]h", gs.next_hunk, "Next hunk")
map("n", "[h", gs.prev_hunk, "Prev hunk")
map("n", "<leader>hs", gs.stage_hunk, "Stage hunk")
map("n", "<leader>hS", gs.stage_buffer, "Stage buffer")
map("n", "<leader>hr", gs.reset_hunk, "Reset hunk")
map("n", "<leader>hR", gs.reset_buffer, "Reset buffer")
map("n", "<leader>hp", gs.preview_hunk, "Preview hunk")
map("n", "<leader>hb", gs.blame_line, "Blame line")
map("n", "<leader>hd", gs.diffthis, "Diff this")
map("n", "<leader>hD", function() gs.diffthis("~") end, "Diff this ~")
map("n", "<leader>ht", gs.toggle_current_line_blame, "Toggle line blame")
end,
},
},
{
"tpope/vim-fugitive",
cmd = { "Git", "G", "Gdiffsplit", "Gvdiffsplit", "Gedit" },
},
{
"sindrets/diffview.nvim",
cmd = { "DiffviewOpen", "DiffviewClose", "DiffviewFileHistory" },
},
{
"kdheepak/lazygit.nvim",
cmd = {
"LazyGit",
"LazyGitConfig",
"LazyGitCurrentFile",
"LazyGitFilter",
"LazyGitFilterCurrentFile",
},
dependencies = { "nvim-lua/plenary.nvim" },
},
}
+97 -4
View File
@@ -25,7 +25,20 @@ return {
event = "VeryLazy", event = "VeryLazy",
dependencies = { "mason.nvim" }, dependencies = { "mason.nvim" },
opts = { opts = {
ensure_installed = { "clangd", "gopls", "pyright", "lua_ls" }, ensure_installed = {
"clangd",
"gopls",
"pyright",
"lua_ls",
"rust_analyzer",
"asm_lsp",
"terraformls",
"ansiblels",
"dockerls",
"yamlls",
"jsonls",
"helm_ls",
},
automatic_installation = true, automatic_installation = true,
}, },
}, },
@@ -35,7 +48,7 @@ return {
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" }, event = { "BufReadPre", "BufNewFile" },
dependencies = { "hrsh7th/cmp-nvim-lsp" }, dependencies = { "hrsh7th/cmp-nvim-lsp", "b0o/schemastore.nvim" },
config = function() config = function()
vim.api.nvim_create_autocmd("LspAttach", { callback = lsp_keymaps }) vim.api.nvim_create_autocmd("LspAttach", { callback = lsp_keymaps })
@@ -72,8 +85,88 @@ return {
}, },
}) })
vim.lsp.enable({ "clangd", "gopls", "pyright", "lua_ls" }) vim.lsp.config("rust_analyzer", {
capabilities = caps,
settings = {
["rust-analyzer"] = {
cargo = { allFeatures = true },
checkOnSave = { command = "clippy" },
},
},
})
vim.lsp.config("asm_lsp", {
capabilities = caps,
filetypes = { "asm", "nasm" },
})
vim.lsp.config("terraformls", { capabilities = caps })
vim.lsp.config("ansiblels", { capabilities = caps })
vim.lsp.config("dockerls", { capabilities = caps })
local k8s_schema = "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.27.0-standalone-strict/all.json"
local schemastore_ok, schemastore = pcall(require, "schemastore")
local yaml_schemas = {}
local json_schemas = {}
if schemastore_ok then
yaml_schemas = schemastore.yaml.schemas()
json_schemas = schemastore.json.schemas()
end
yaml_schemas[k8s_schema] = {
"k8s/**/*.yaml",
"k8s/**/*.yml",
"kubernetes/**/*.yaml",
"kubernetes/**/*.yml",
"*.k8s.yaml",
"*.k8s.yml",
}
yaml_schemas["https://json.schemastore.org/kustomization.json"] = {
"kustomization.yaml",
"kustomization.yml",
}
vim.lsp.config("yamlls", {
capabilities = caps,
settings = {
yaml = {
validate = true,
format = { enable = true },
schemaStore = { enable = false, url = "" },
schemas = yaml_schemas,
},
},
})
vim.lsp.config("jsonls", {
capabilities = caps,
settings = {
json = {
validate = { enable = true },
schemaStore = { enable = false, url = "" },
schemas = json_schemas,
},
},
})
vim.lsp.config("helm_ls", { capabilities = caps })
vim.lsp.enable({
"clangd",
"gopls",
"pyright",
"lua_ls",
"rust_analyzer",
"asm_lsp",
"terraformls",
"ansiblels",
"dockerls",
"yamlls",
"jsonls",
"helm_ls",
})
end, end,
}, },
} }
+2 -1
View File
@@ -9,6 +9,8 @@ return {
c = { "clang_format" }, c = { "clang_format" },
cpp = { "clang_format" }, cpp = { "clang_format" },
go = { "gofmt", "goimports" }, go = { "gofmt", "goimports" },
terraform = { "terraform_fmt" },
rust = { "rustfmt" },
python = { "isort", "black" }, python = { "isort", "black" },
lua = { "stylua" }, lua = { "stylua" },
json = { "prettier" }, json = { "prettier" },
@@ -43,4 +45,3 @@ return {
end, end,
}, },
} }
+2 -2
View File
@@ -5,7 +5,8 @@ return {
event = { "BufReadPost", "BufNewFile" }, event = { "BufReadPost", "BufNewFile" },
opts = { opts = {
ensure_installed = { ensure_installed = {
"c", "cpp", "go", "python", "lua", "c", "cpp", "go", "rust", "python", "lua", "asm", "nasm",
"terraform", "hcl", "dockerfile",
"bash", "json", "yaml", "toml", "bash", "json", "yaml", "toml",
"markdown", "markdown_inline", "markdown", "markdown_inline",
"regex", "vim", "vimdoc", "regex", "vim", "vimdoc",
@@ -20,4 +21,3 @@ return {
end, end,
}, },
} }
-1
View File
@@ -38,4 +38,3 @@ return {
}, },
}, },
} }
-1
View File
@@ -1 +0,0 @@
/Users/itq/dotfiles/.config/nvim