Привёл 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"]
path = zsh/p10k
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 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
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
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.cmd [[packadd packer.nvim]]
vim.cmd([[packadd packer.nvim]])
require 'options'
require 'keymaps'
require 'autocommands'
require 'plugins'
require 'lsp'
require("options")
require("keymaps")
require("autocommands")
require("plugins")
require("lsp")
require("dap")
vim.cmd [[colorscheme moonfly]]
vim.cmd([[colorscheme moonfly]])

View file

@ -1,9 +1,9 @@
vim.api.nvim_create_autocmd({'BufWritePre'}, {
pattern = '*.go',
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
pattern = "*.go",
callback = function()
local params = vim.lsp.util.make_range_params(nil, vim.lsp.util._get_offset_encoding())
params.context = { only = {'source.organizeImports'} }
local result = vim.lsp.buf_request_sync(0, 'textDocument/codeAction', params, 3000)
params.context = { only = { "source.organizeImports" } }
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
for _, res in pairs(result or {}) do
for _, r in pairs(res.result or {}) do
if r.edit then
@ -16,31 +16,79 @@ vim.api.nvim_create_autocmd({'BufWritePre'}, {
end,
})
vim.api.nvim_create_autocmd({'BufWritePre'}, {
pattern = '*.go',
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
pattern = "*.go",
callback = function()
vim.lsp.buf.format(nil, 3000)
end
end,
})
local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup('TrimWhiteSpaceGrp', {})
vim.api.nvim_create_autocmd('BufWritePre', {
local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup("TrimWhiteSpaceGrp", {})
vim.api.nvim_create_autocmd("BufWritePre", {
group = TrimWhiteSpaceGrp,
pattern = '*',
command = '%s/\\s\\+$//e',
pattern = "*",
command = "%s/\\s\\+$//e",
})
local YankHighlightGrp = vim.api.nvim_create_augroup('YankHighlightGrp', {})
vim.api.nvim_create_autocmd('TextYankPost', {
local YankHighlightGrp = vim.api.nvim_create_augroup("YankHighlightGrp", {})
vim.api.nvim_create_autocmd("TextYankPost", {
group = YankHighlightGrp,
pattern = '*',
pattern = "*",
callback = function()
vim.highlight.on_yank({
higroup = 'IncSearch',
higroup = "IncSearch",
timeout = 40,
})
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 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('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('v', 'i', '<S-i>', opts)
map('v', 'a', '<S-a>', opts)
map("v", "i", "<S-i>", opts)
map("v", "a", "<S-a>", opts)
-- Перемещение между буферами
kmap('n', '<leader>bn', ':bnext<CR>', { noremap = true, silent = true }) -- Следующий буфер
kmap('n', '<leader>bp', ':bprevious<CR>', { noremap = true, silent = true }) -- Предыдущий буфер
kmap('n', '<leader>bd', ':bdelete<CR>', { noremap = true, silent = true }) -- Закрыть текущий буфер
map("n", "<leader>bn", "<cmd>bnext<CR>", opts) -- Следующий буфер
map("n", "<leader>bp", "<cmd>bprevious<CR>", opts) -- Предыдущий буфер
map("n", "<leader>bd", "<cmd>bdelete<CR>", opts) -- Закрыть текущий буфер
map("n", "<leader>w", "<cmd>wa<CR>", opts)
-- Tree
map('n', '<C-t>', ':NvimTreeToggle<CR>', opts)
map("n", "<F3>", ":NvimTreeToggle<CR>", opts)
-- Telescope
map('n', '<leader>ff', '<cmd>Telescope find_files<CR>', opts)
map('n', '<leader>fg', '<cmd>Telescope live_grep<CR>', opts)
map('n', '<leader>fb', '<cmd>Telescope buffers<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>fb", "<cmd>Telescope buffers<CR>", opts)
-- LSP
kmap('n', '<leader>e', vim.diagnostic.open_float, opts)
kmap('n', '[d', vim.diagnostic.goto_prev, opts)
kmap('n', ']d', vim.diagnostic.goto_next, opts)
kmap('n', '<leader>q', vim.diagnostic.setloclist, opts)
kmap("n", "<leader>e", vim.diagnostic.open_float, opts)
kmap("n", "[d", vim.diagnostic.goto_prev, opts)
kmap("n", "]d", vim.diagnostic.goto_next, opts)
kmap("n", "<leader>q", vim.diagnostic.setloclist, opts)
-- стандартные горячие клавиши для LSP, больше в документации
-- https://github.com/neovim/nvim-lspconfig
kmap('n', 'gD', vim.lsp.buf.declaration, opts)
kmap('n', 'gd', vim.lsp.buf.definition, opts)
kmap('n', 'K', vim.lsp.buf.hover, opts)
kmap('n', 'gi', vim.lsp.buf.implementation, 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>wr', vim.lsp.buf.remove_workspace_folder, opts)
kmap('n', '<leader>wl', function()
kmap("n", "gD", vim.lsp.buf.declaration, opts)
kmap("n", "gd", vim.lsp.buf.definition, opts)
kmap("n", "K", vim.lsp.buf.hover, opts)
kmap("n", "gi", vim.lsp.buf.implementation, 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>wr", vim.lsp.buf.remove_workspace_folder, opts)
kmap("n", "<leader>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
kmap('n', '<leader>D', vim.lsp.buf.type_definition, opts)
kmap('n', '<leader>rn', vim.lsp.buf.rename, opts)
kmap('n', '<leader>ca', vim.lsp.buf.code_action, opts)
kmap('n', 'gr', vim.lsp.buf.references, opts)
kmap("n", "<leader>D", vim.lsp.buf.type_definition, opts)
kmap("n", "<leader>rn", vim.lsp.buf.rename, opts)
kmap("n", "<leader>ca", vim.lsp.buf.code_action, opts)
kmap("n", "gr", vim.lsp.buf.references, 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 api = require("nvim-tree.api")
@ -57,5 +62,4 @@ local function change_root_to_global_cwd()
api.tree.change_root(global_cwd)
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,
cursorline = true,
number = true,
relativenumber = true,
-- relativenumber = true,
numberwidth = 4,
signcolumn = "yes",
wrap = true,
scrolloff = 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
vim.opt[k] = v
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)
use 'wbthomason/packer.nvim'
use 'nvim-lua/plenary.nvim'
use 'neovim/nvim-lspconfig'
use 'bluz71/vim-moonfly-colors'
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'
return require("packer").startup({
function(use)
use("wbthomason/packer.nvim")
use("nvim-lua/plenary.nvim")
use("neovim/nvim-lspconfig")
use("bluz71/vim-moonfly-colors")
use("Snyssfx/goerr-nvim")
use({
"lukas-reineke/indent-blankline.nvim",
config = function()
require("ibl").setup()
end,
})
use({
"rcarriga/nvim-dap-ui",
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
}
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("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',
}}
end,
config = {
-- The root has to be a directory named "pack"
package_root = vim.fn.stdpath("data") .. "/site/pack",
},
})

View file

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

View file

@ -5,10 +5,23 @@ require("nvim-tree").setup({
view = {
width = 30,
},
git = {
enable = true,
},
renderer = {
group_empty = true,
highlight_git = true,
icons = {
show = {
git = true,
},
},
},
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 PATH=$PATH:$ANDROID_HOME/emulator
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 GPG_TTY=$(tty)
export LS_OPTIONS='--color=auto'