Привёл nvim к достаточному состоянию

This commit is contained in:
Alexander Neonxp Kiryukhin 2025-04-21 15:15:42 +03:00
parent 020ed86034
commit 4d3bb0270a
Signed by: NeonXP
SSH key fingerprint: SHA256:SVt7TjxbVc87m1QYaQziOJ0N3OCFURv2g76gD/UTTXI
27 changed files with 279 additions and 148 deletions

6
.gitmodules vendored
View file

@ -1,9 +1,3 @@
[submodule "zsh/p10k"] [submodule "zsh/p10k"]
path = zsh/p10k path = zsh/p10k
url = https://github.com/romkatv/powerlevel10k.git url = https://github.com/romkatv/powerlevel10k.git
[submodule "nvim/pack/nvim/start/nvim-lspconfig"]
path = nvim/pack/nvim/start/nvim-lspconfig
url = https://github.com/neovim/nvim-lspconfig.git
[submodule "nvim/pack/packer/start/cmp-buffer"]
path = nvim/pack/packer/start/cmp-buffer
url = https://github.com/hrsh7th/cmp-buffer.git

View file

@ -1,18 +1,20 @@
local fn = vim.fn local fn = vim.fn
local install_path = fn.stdpath('config')..'/pack/packer/start/packer.nvim' local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then if fn.empty(fn.glob(install_path)) > 0 then
packer_bootstrap = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) packer_bootstrap =
fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path })
end end
vim.g.mapleader = " " vim.g.mapleader = " "
vim.g.maplocalleader = " " vim.g.maplocalleader = " "
vim.cmd [[packadd packer.nvim]] vim.cmd([[packadd packer.nvim]])
require 'options' require("options")
require 'keymaps' require("keymaps")
require 'autocommands' require("autocommands")
require 'plugins' require("plugins")
require 'lsp' require("lsp")
require("dap")
vim.cmd [[colorscheme moonfly]] vim.cmd([[colorscheme moonfly]])

View file

@ -1,9 +1,9 @@
vim.api.nvim_create_autocmd({'BufWritePre'}, { vim.api.nvim_create_autocmd({ "BufWritePre" }, {
pattern = '*.go', pattern = "*.go",
callback = function() callback = function()
local params = vim.lsp.util.make_range_params(nil, vim.lsp.util._get_offset_encoding()) local params = vim.lsp.util.make_range_params(nil, vim.lsp.util._get_offset_encoding())
params.context = { only = {'source.organizeImports'} } params.context = { only = { "source.organizeImports" } }
local result = vim.lsp.buf_request_sync(0, 'textDocument/codeAction', params, 3000) local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
for _, res in pairs(result or {}) do for _, res in pairs(result or {}) do
for _, r in pairs(res.result or {}) do for _, r in pairs(res.result or {}) do
if r.edit then if r.edit then
@ -16,31 +16,79 @@ vim.api.nvim_create_autocmd({'BufWritePre'}, {
end, end,
}) })
vim.api.nvim_create_autocmd({'BufWritePre'}, { vim.api.nvim_create_autocmd({ "BufWritePre" }, {
pattern = '*.go', pattern = "*.go",
callback = function() callback = function()
vim.lsp.buf.format(nil, 3000) vim.lsp.buf.format(nil, 3000)
end end,
}) })
local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup("TrimWhiteSpaceGrp", {})
local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup('TrimWhiteSpaceGrp', {}) vim.api.nvim_create_autocmd("BufWritePre", {
vim.api.nvim_create_autocmd('BufWritePre', {
group = TrimWhiteSpaceGrp, group = TrimWhiteSpaceGrp,
pattern = '*', pattern = "*",
command = '%s/\\s\\+$//e', command = "%s/\\s\\+$//e",
}) })
local YankHighlightGrp = vim.api.nvim_create_augroup('YankHighlightGrp', {}) local YankHighlightGrp = vim.api.nvim_create_augroup("YankHighlightGrp", {})
vim.api.nvim_create_autocmd('TextYankPost', { vim.api.nvim_create_autocmd("TextYankPost", {
group = YankHighlightGrp, group = YankHighlightGrp,
pattern = '*', pattern = "*",
callback = function() callback = function()
vim.highlight.on_yank({ vim.highlight.on_yank({
higroup = 'IncSearch', higroup = "IncSearch",
timeout = 40, timeout = 40,
}) })
end, end,
}) })
vim.api.nvim_create_autocmd({ "BufReadPost", "FileReadPost" }, {
pattern = "*",
callback = function()
vim.cmd("normal! zR")
end,
})
vim.api.nvim_create_autocmd("BufEnter", {
pattern = "*",
callback = function()
vim.defer_fn(function()
vim.cmd("normal! zR")
end, 100)
end,
})
vim.api.nvim_create_autocmd("BufWinEnter", {
pattern = "*",
callback = function()
vim.schedule(function()
vim.cmd("normal! zR")
end)
end,
})
local treeapi = require("nvim-tree.api")
vim.api.nvim_create_autocmd("BufEnter", {
callback = function()
if vim.bo.filetype == "NvimTree" or vim.fn.expand("%") == "" then
return
end
vim.schedule(function()
treeapi.tree.find_file({
update_root = false,
focus = false,
})
end)
end,
})
-- vim.api.nvim_create_autocmd("InsertEnter", {
-- pattern = "*",
-- command = "set norelativenumber",
-- })
--
-- vim.api.nvim_create_autocmd("InsertLeave", {
-- pattern = "*",
-- command = "set relativenumber",
-- })

View file

@ -1,55 +1,60 @@
local map = vim.api.nvim_set_keymap local map = vim.api.nvim_set_keymap
local kmap = vim.keymap.set local kmap = vim.keymap.set
local opts = {noremap = true, silent = true} local opts = { noremap = true, silent = true }
map("n", "<Space>", "<Nop>", opts)
map("n", "<Home>", "^", opts)
map("n", "<End>", "$", opts)
map("v", "<Home>", "^", opts)
map("v", "<End>", "$", opts)
map("i", "<Home>", "<C-o>^", opts)
map("i", "<End>", "<C-o>$", opts)
map('n', '<Space>', '<Nop>', opts) map("v", "i", "<S-i>", opts)
map('n', '<Home>', '^', opts) map("v", "a", "<S-a>", opts)
map('n', '<End>', '$', opts)
map('v', '<Home>', '^', opts)
map('v', '<End>', '$', opts)
map('i', '<Home>', '<C-o>^', opts)
map('i', '<End>', '<C-o>$', opts)
map('v', 'i', '<S-i>', opts)
map('v', 'a', '<S-a>', opts)
-- Перемещение между буферами -- Перемещение между буферами
kmap('n', '<leader>bn', ':bnext<CR>', { noremap = true, silent = true }) -- Следующий буфер map("n", "<leader>bn", "<cmd>bnext<CR>", opts) -- Следующий буфер
kmap('n', '<leader>bp', ':bprevious<CR>', { noremap = true, silent = true }) -- Предыдущий буфер map("n", "<leader>bp", "<cmd>bprevious<CR>", opts) -- Предыдущий буфер
kmap('n', '<leader>bd', ':bdelete<CR>', { noremap = true, silent = true }) -- Закрыть текущий буфер map("n", "<leader>bd", "<cmd>bdelete<CR>", opts) -- Закрыть текущий буфер
map("n", "<leader>w", "<cmd>wa<CR>", opts)
-- Tree -- Tree
map('n', '<C-t>', ':NvimTreeToggle<CR>', opts) map("n", "<F3>", ":NvimTreeToggle<CR>", opts)
-- Telescope -- Telescope
map('n', '<leader>ff', '<cmd>Telescope find_files<CR>', opts) map("n", "<leader>ff", "<cmd>Telescope find_files<CR>", opts)
map('n', '<leader>fg', '<cmd>Telescope live_grep<CR>', opts) map("n", "<leader>fg", "<cmd>Telescope live_grep<CR>", opts)
map('n', '<leader>fb', '<cmd>Telescope buffers<CR>', opts) map("n", "<leader>fb", "<cmd>Telescope buffers<CR>", opts)
-- LSP -- LSP
kmap('n', '<leader>e', vim.diagnostic.open_float, opts) kmap("n", "<leader>e", vim.diagnostic.open_float, opts)
kmap('n', '[d', vim.diagnostic.goto_prev, opts) kmap("n", "[d", vim.diagnostic.goto_prev, opts)
kmap('n', ']d', vim.diagnostic.goto_next, opts) kmap("n", "]d", vim.diagnostic.goto_next, opts)
kmap('n', '<leader>q', vim.diagnostic.setloclist, opts) kmap("n", "<leader>q", vim.diagnostic.setloclist, opts)
-- стандартные горячие клавиши для LSP, больше в документации -- стандартные горячие клавиши для LSP, больше в документации
-- https://github.com/neovim/nvim-lspconfig -- https://github.com/neovim/nvim-lspconfig
kmap('n', 'gD', vim.lsp.buf.declaration, opts) kmap("n", "gD", vim.lsp.buf.declaration, opts)
kmap('n', 'gd', vim.lsp.buf.definition, opts) kmap("n", "gd", vim.lsp.buf.definition, opts)
kmap('n', 'K', vim.lsp.buf.hover, opts) kmap("n", "K", vim.lsp.buf.hover, opts)
kmap('n', 'gi', vim.lsp.buf.implementation, opts) kmap("n", "gi", vim.lsp.buf.implementation, opts)
kmap('n', '<C-k>', vim.lsp.buf.signature_help, opts) kmap("n", "<C-k>", vim.lsp.buf.signature_help, opts)
kmap('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts) kmap("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
kmap('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts) kmap("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
kmap('n', '<leader>wl', function() kmap("n", "<leader>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders())) print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts) end, opts)
kmap('n', '<leader>D', vim.lsp.buf.type_definition, opts) kmap("n", "<leader>D", vim.lsp.buf.type_definition, opts)
kmap('n', '<leader>rn', vim.lsp.buf.rename, opts) kmap("n", "<leader>rn", vim.lsp.buf.rename, opts)
kmap('n', '<leader>ca', vim.lsp.buf.code_action, opts) kmap("n", "<leader>ca", vim.lsp.buf.code_action, opts)
kmap('n', 'gr', vim.lsp.buf.references, opts) kmap("n", "gr", vim.lsp.buf.references, opts)
-- kmap('n', '<leader>f', vim.lsp.buf.formatting, opts) -- kmap('n', '<leader>f', vim.lsp.buf.formatting, opts)
kmap("n", "<leader>bb", "<cmd>lua require'dap'.toggle_breakpoint()<CR>", opts)
kmap("n", "<F9>", "<cmd>lua require'dap'.continue()<CR>", opts)
kmap("n", "<F8>", "<cmd>lua require'dap'.step_over()<CR>", opts)
kmap("n", "<F7>", "<cmd>lua require'dap'.step_into()<CR>", opts)
kmap("n", "<F2>", "<cmd>lua require'dapui'.toggle()<CR>", opts)
local function change_root_to_global_cwd() local function change_root_to_global_cwd()
local api = require("nvim-tree.api") local api = require("nvim-tree.api")
@ -57,5 +62,4 @@ local function change_root_to_global_cwd()
api.tree.change_root(global_cwd) api.tree.change_root(global_cwd)
end end
kmap('n', '<C-c>', change_root_to_global_cwd, {}) kmap("n", "<C-c>", change_root_to_global_cwd, opts)

View file

@ -28,18 +28,24 @@ local options = {
tabstop = 4, tabstop = 4,
cursorline = true, cursorline = true,
number = true, number = true,
relativenumber = true, -- relativenumber = true,
numberwidth = 4, numberwidth = 4,
signcolumn = "yes", signcolumn = "yes",
wrap = true, wrap = true,
scrolloff = 8, scrolloff = 8,
sidescrolloff = 8, sidescrolloff = 8,
syntax = "on",
foldmethod = "expr",
foldexpr = "nvim_treesitter#foldexpr()",
foldnestmax = 4,
foldlevel = 99,
foldlevelstart = 1,
} }
vim.opt.shortmess:append "c" vim.opt.shortmess:append("c")
for k, v in pairs(options) do for k, v in pairs(options) do
vim.opt[k] = v vim.opt[k] = v
end end
vim.cmd "set whichwrap+=<,>,[,],h,l" vim.cmd("set whichwrap+=<,>,[,],h,l")

9
nvim/lua/plugins/dap.lua Normal file
View file

@ -0,0 +1,9 @@
require("dap-go").setup()
require("dap").adapters.go = {
type = "server",
port = "${port}",
executable = {
command = "dlv",
args = { "dap", "-l", "127.0.0.1:${port}" },
},
}

View file

@ -0,0 +1,29 @@
local conform = require("conform")
conform.setup({
formatters_by_ft = {
javascript = { "prettier" },
typescript = { "prettier" },
javascriptreact = { "prettier" },
typescriptreact = { "prettier" },
svelte = { "prettier" },
css = { "prettier" },
html = { "prettier" },
json = { "prettier" },
yaml = { "prettier" },
markdown = { "prettier" },
graphql = { "prettier" },
lua = { "stylua" },
python = { "isort", "black" },
go = { "gofmt" },
},
format_on_save = {
lsp_fallback = true,
async = false,
timeout_ms = 500,
},
})
vim.keymap.set({ "n", "v" }, "<leader>mp", function()
conform.format({ lsp_fallback = true, async = false, timeout_ms = 500 })
end, { desc = "Format file or range (in visual mode)" })

View file

@ -1,61 +1,100 @@
return require('packer').startup{function(use) return require("packer").startup({
use 'wbthomason/packer.nvim' function(use)
use 'nvim-lua/plenary.nvim' use("wbthomason/packer.nvim")
use 'neovim/nvim-lspconfig' use("nvim-lua/plenary.nvim")
use 'bluz71/vim-moonfly-colors' use("neovim/nvim-lspconfig")
use { use("bluz71/vim-moonfly-colors")
'hrsh7th/nvim-cmp', use("Snyssfx/goerr-nvim")
requires = { use({
'hrsh7th/cmp-nvim-lsp', "lukas-reineke/indent-blankline.nvim",
'hrsh7th/cmp-buffer', config = function()
'hrsh7th/cmp-path', require("ibl").setup()
'hrsh7th/cmp-vsnip', end,
'hrsh7th/vim-vsnip', })
}, use({
config = function() "rcarriga/nvim-dap-ui",
require 'plugins.cmp' requires = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" },
config = function()
require("dapui").setup()
end,
})
use({
"leoluz/nvim-dap-go",
requires = { "mfussenegger/nvim-dap" },
config = function()
require("plugins.dap")
end,
})
use({
"hrsh7th/nvim-cmp",
requires = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-vsnip",
"hrsh7th/vim-vsnip",
},
config = function()
require("plugins.cmp")
end,
})
use({
"nvim-lualine/lualine.nvim",
config = function()
require("plugins.lualine")
end,
})
use({
"nvim-treesitter/nvim-treesitter",
run = ":TSUpdate",
config = function()
require("plugins.treesitter")
end,
})
use({
"nvim-telescope/telescope.nvim",
config = function()
require("plugins.telescope")
end,
})
use({
"nvim-tree/nvim-tree.lua",
requires = {
"nvim-tree/nvim-web-devicons",
},
config = function()
require("plugins.tree")
end,
})
use({
"stevearc/conform.nvim",
config = function()
require("plugins.format")
end,
})
use({
"mfussenegger/nvim-dap",
config = function()
local dap = require("dap")
-- Общие конфигурации для Go
dap.configurations.go = {
{
type = "go",
name = "Debug",
request = "launch",
program = "${file}",
showLog = true,
console = "integratedTerminal",
},
}
end,
})
if packer_bootstrap then
require("packer").sync()
end end
} end,
use { config = {
'nvim-lualine/lualine.nvim', -- The root has to be a directory named "pack"
config = function() package_root = vim.fn.stdpath("data") .. "/site/pack",
require 'plugins.lualine' },
end })
}
use {
'nvim-treesitter/nvim-treesitter',
run = ':TSUpdate',
config = function()
require 'plugins.treesitter'
end
}
use {
'nvim-telescope/telescope.nvim',
config = function()
require 'plugins.telescope'
end
}
use {
'nvim-tree/nvim-tree.lua',
requires = {
'nvim-tree/nvim-web-devicons',
},
config = function()
require 'plugins.tree'
end
}
use {
"stevearc/conform.nvim",
config = function()
require("conform").setup()
end,
}
if packer_bootstrap then
require('packer').sync()
end
end,
config = {
-- The root has to be a directory named "pack"
package_root = vim.fn.stdpath('config') .. '/pack',
}}

View file

@ -3,5 +3,8 @@ require('telescope').setup{
buffers = { buffers = {
initial_mode = 'normal' initial_mode = 'normal'
} }
},
defaults = {
file_ignore_patterns = {"vendor", "node_modules"}
} }
} }

View file

@ -5,10 +5,23 @@ require("nvim-tree").setup({
view = { view = {
width = 30, width = 30,
}, },
git = {
enable = true,
},
renderer = { renderer = {
group_empty = true, group_empty = true,
highlight_git = true,
icons = {
show = {
git = true,
},
},
}, },
filters = { filters = {
dotfiles = true, dotfiles = false,
},
update_focused_file = {
enable = true,
update_root = false,
}, },
}) })

@ -1 +0,0 @@
Subproject commit b74fab3656eea9de20a9b8116afa3cfc4ec09657

@ -1 +0,0 @@
Subproject commit a8912b88ce488f411177fc8aed358b04dc246d7b

@ -1 +0,0 @@
Subproject commit c6635aae33a50d6010bf1aa756ac2398a2d54c32

@ -1 +0,0 @@
Subproject commit 989a8a73c44e926199bfd05fa7a516d51f2d2752

@ -1 +0,0 @@
Subproject commit 819c283db24211fd8ed2732b89a92ff9daa879b6

@ -1 +0,0 @@
Subproject commit 86fe39534b7da729a1ac56c0466e76f2c663dc42

@ -1 +0,0 @@
Subproject commit b5311ab3ed9c846b585c0c15b7559be131ec4be9

@ -1 +0,0 @@
Subproject commit 32b6a6449aaba11461fffbb596dd6310af79eea4

@ -1 +0,0 @@
Subproject commit 3a63717d3d332d8f39aaf65be7a0e4c2265af021

@ -1 +0,0 @@
Subproject commit 684eeac91ed8e297685a97ef70031d19ac1de25a

@ -1 +0,0 @@
Subproject commit 855c97005c8eebcdd19846f2e54706bffd40ee96

@ -1 +0,0 @@
Subproject commit ea0cc3c59f67c440c5ff0bbe4fb9420f4350b9a3

@ -1 +0,0 @@
Subproject commit 857c5ac632080dba10aae49dba902ce3abf91b35

@ -1 +0,0 @@
Subproject commit a4ed82509cecc56df1c7138920a1aeaf246c0ac5

@ -1 +0,0 @@
Subproject commit bfa6b2486a72784b7546d0d3e9322aef70e07b03

@ -1 +0,0 @@
Subproject commit 0a4b8419e44f47c57eec4c90df17567ad4b1b36e

View file

@ -30,7 +30,7 @@ export EDITOR="nvim"
export ANDROID_HOME=$HOME/projects/android/ export ANDROID_HOME=$HOME/projects/android/
export PATH=$PATH:$ANDROID_HOME/emulator export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:~/.local/bin:~/go/bin export PATH=$PATH:~/.local/bin:~/go/bin:~/.cargo/bin
export GOBIN=~/go/bin export GOBIN=~/go/bin
export GPG_TTY=$(tty) export GPG_TTY=$(tty)
export LS_OPTIONS='--color=auto' export LS_OPTIONS='--color=auto'