fixed autocompletion and added some shit

This commit is contained in:
rattatwinko
2025-06-12 10:53:18 +02:00
parent be85b7164d
commit cbd87b0b11
2 changed files with 201 additions and 115 deletions

142
README.md
View File

@@ -1,67 +1,89 @@
🚀 GENERAL KEYBINDS: # 🚀 General Keybinds
<leader>e - Show diagnostic float
[d / ]d - Navigate diagnostics
<leader>n - Toggle file explorer (Neo-tree)
<leader>ff - Find files (Telescope)
<leader>fg - Live grep (Telescope)
<leader>gs - Git status (Fugitive)
<leader>gg - Open LazyGit
📝 EDITING: - `<leader>e` - Show diagnostic float
gd - Go to definition - `[d` / `]d` - Navigate diagnostics
gr - Find references - `<leader>n` - Toggle file explorer (Neo-tree)
K - Hover documentation - `<leader>ff` - Find files (Telescope)
<leader>rn - Rename symbol - `<leader>fg` - Live grep (Telescope)
<Tab> - Next completion item - `<leader>gs` - Git status (Fugitive)
<S-Tab> - Previous completion item - `<leader>gg` - Open LazyGit
<CR> - Confirm completion
<C-Space> - Trigger completion
( - Auto-complete parentheses
🌲 NEO-TREE: ---
o / <CR> - Open file
t - Open in new tab
v - Open in vertical split
s - Open in horizontal split
r - Rename
d - Delete
a - Add file
A - Add directory
R - Refresh
. - Toggle hidden files
🔭 TELESCOPE: # 📝 Editing
<C-n>/<C-p> - Next/previous item
<C-j>/<C-k> - Move selection
<C-t> - Open in new tab
<C-v> - Open in vertical split
<C-x> - Open in horizontal split
<C-u> - Clear prompt
<C-c> - Close telescope
💻 LSP: - `gd` - Go to definition
<leader>d - Show diagnostics - `gr` - Find references
<leader>ca - Code actions - `K` - Hover documentation
<leader>f - Format file - `<leader>rn` - Rename symbol
<leader>wa - Add workspace folder - `<Tab>` - Next completion item
<leader>wr - Remove workspace folder - `<S-Tab>` - Previous completion item
<leader>wl - List workspace folders - `<CR>` - Confirm completion
- `<C-Space>` - Trigger completion
- `(` - Auto-complete parentheses
💾 BUFFER MANAGEMENT: ---
<leader>bd - Delete buffer
<leader>bn - Next buffer
<leader>bp - Previous buffer
<leader>bl - List buffers
🐱 GIT: # 🌲 Neo-tree
<leader>gc - Git commit
<leader>gp - Git push
<leader>gl - Git log
<leader>gd - Git diff
<leader>gb - Git blame
🔄 TERMINAL: - `o` / `<CR>` - Open file
<C-\> - Toggle terminal - `t` - Open in new tab
<Esc><Esc> - Exit terminal mode - `v` - Open in vertical split
<leader>tt - New terminal - `s` - Open in horizontal split
<leader>tf - New floating terminal - `r` - Rename
- `d` - Delete
- `a` - Add file
- `A` - Add directory
- `R` - Refresh
- `.` - Toggle hidden files
---
# 🔭 Telescope
- `<C-n>` / `<C-p>` - Next/previous item
- `<C-j>` / `<C-k>` - Move selection
- `<C-t>` - Open in new tab
- `<C-v>` - Open in vertical split
- `<C-x>` - Open in horizontal split
- `<C-u>` - Clear prompt
- `<C-c>` - Close telescope
---
# 💻 LSP
- `<leader>d` - Show diagnostics
- `<leader>ca` - Code actions
- `<leader>f` - Format file
- `<leader>wa` - Add workspace folder
- `<leader>wr` - Remove workspace folder
- `<leader>wl` - List workspace folders
---
# 💾 Buffer Management
- `<leader>bd` - Delete buffer
- `<leader>bn` - Next buffer
- `<leader>bp` - Previous buffer
- `<leader>bl` - List buffers
---
# 🐱 Git
- `<leader>gc` - Git commit
- `<leader>gp` - Git push
- `<leader>gl` - Git log
- `<leader>gd` - Git diff
- `<leader>gb` - Git blame
---
# 🔄 Terminal
- `<C-\>` - Toggle terminal
- `<Esc><Esc>` - Exit terminal mode
- `<leader>tt` - New terminal
- `<leader>tf` - New floating terminal

174
init.lua
View File

@@ -1,5 +1,5 @@
-- ~/.config/nvim/init.lua -- ~/.config/nvim/init.lua
-- Complete VSCode-like Neovim Config with Enhanced Tab Completion -- Complete VSCode-like Neovim Config with All Requested Keybindings
-- ====================== -- ======================
-- 1. Basic Configuration -- 1. Basic Configuration
@@ -7,7 +7,7 @@
vim.g.mapleader = " " vim.g.mapleader = " "
vim.g.maplocalleader = " " vim.g.maplocalleader = " "
-- Optimized Editor Settings -- Editor Settings (unchanged from previous)
vim.opt.number = true vim.opt.number = true
vim.opt.relativenumber = true vim.opt.relativenumber = true
vim.opt.mouse = "a" vim.opt.mouse = "a"
@@ -58,7 +58,7 @@ vim.opt.rtp:prepend(lazypath)
-- 3. Plugin Specifications -- 3. Plugin Specifications
-- ====================== -- ======================
local plugins = { local plugins = {
-- Theme -- Theme (unchanged)
{ {
"drewtempelmeyer/palenight.vim", "drewtempelmeyer/palenight.vim",
priority = 1000, priority = 1000,
@@ -76,7 +76,7 @@ local plugins = {
}, },
-- Fuzzy Finder -- Fuzzy Finder
{ "nvim-telescope/telescope.nvim", branch = "0.1.x", dependencies = { "nvim-lua/plenary.nvim" } }, { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" } },
-- LSP Configuration -- LSP Configuration
{ {
@@ -104,6 +104,35 @@ local plugins = {
}, },
}, },
-- Auto Pairs
{
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
require("nvim-autopairs").setup({
check_ts = true,
ts_config = {
lua = { "string", "source" },
javascript = { "string", "template_string" },
typescript = { "string", "template_string" },
},
disable_filetype = { "TelescopePrompt", "spectre_panel" },
fast_wrap = {
map = "<M-e>",
chars = { "{", "[", "(", '"', "'", "<" },
pattern = [=[[%'%"%)%>%]%)%}%,]]=],
end_key = "$",
highlight = "Search",
highlight_grey = "Comment",
},
})
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
local cmp = require("cmp")
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
end,
},
-- Git Integration -- Git Integration
{ "lewis6991/gitsigns.nvim", opts = {} }, { "lewis6991/gitsigns.nvim", opts = {} },
{ "tpope/vim-fugitive" }, { "tpope/vim-fugitive" },
@@ -117,11 +146,10 @@ local plugins = {
-- Syntax & Editing -- Syntax & Editing
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" }, { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
{ "windwp/nvim-autopairs", event = "InsertEnter" },
{ "numToStr/Comment.nvim", opts = {} }, { "numToStr/Comment.nvim", opts = {} },
-- Productivity -- Productivity
{ "akinsho/toggleterm.nvim", version = "*" }, { "akinsho/toggleterm.nvim", version = "*", config = true },
{ "folke/which-key.nvim", event = "VimEnter" }, { "folke/which-key.nvim", event = "VimEnter" },
{ "stevearc/conform.nvim" }, { "stevearc/conform.nvim" },
{ "mfussenegger/nvim-lint", event = { "BufReadPre", "BufNewFile" } }, { "mfussenegger/nvim-lint", event = { "BufReadPre", "BufNewFile" } },
@@ -150,7 +178,7 @@ require("lazy").setup(plugins, {
}, },
}) })
-- Neo-tree Configuration -- Neo-tree Configuration with Keymaps
require("neo-tree").setup({ require("neo-tree").setup({
close_if_last_window = false, close_if_last_window = false,
popup_border_style = "rounded", popup_border_style = "rounded",
@@ -159,48 +187,57 @@ require("neo-tree").setup({
filesystem = { filesystem = {
follow_current_file = { enabled = true }, follow_current_file = { enabled = true },
hijack_netrw_behavior = "open_current", hijack_netrw_behavior = "open_current",
use_libuv_file_watcher = true,
}, },
window = { window = {
position = "left", position = "right",
width = 30, width = 30,
mappings = { ["<space>"] = "none" }, mappings = {
["<space>"] = "none", -- disable space as it's our leader key
["o"] = "open",
["<CR>"] = "open",
["t"] = "open_tabnew",
["v"] = "open_vsplit",
["s"] = "open_split",
["r"] = "rename",
["d"] = "delete",
["a"] = "add",
["A"] = "add_directory",
["R"] = "refresh",
["."] = "toggle_hidden",
},
}, },
}) })
-- Telescope Configuration -- Telescope Configuration with Keymaps
require("telescope").setup({ require("telescope").setup({
defaults = { defaults = {
mappings = { mappings = {
i = { i = {
["<C-u>"] = false, ["<C-n>"] = "move_selection_next",
["<C-d>"] = false, ["<C-p>"] = "move_selection_previous",
["<C-j>"] = "move_selection_next",
["<C-k>"] = "move_selection_previous",
["<C-t>"] = "select_tab",
["<C-v>"] = "select_vertical",
["<C-x>"] = "select_horizontal",
["<C-u>"] = "clear_prompt",
["<C-c>"] = "close",
}, },
}, },
}, },
}) })
-- LSP Setup with Enhanced Completion -- LSP Setup
local capabilities = vim.lsp.protocol.make_client_capabilities() local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities)
capabilities.textDocument.completion.completionItem.snippetSupport = true capabilities.textDocument.completion.completionItem.snippetSupport = true
capabilities.textDocument.completion.completionItem.resolveSupport = {
properties = { "documentation", "detail", "additionalTextEdits" },
}
require("mason").setup() require("mason").setup()
require("mason-lspconfig").setup({ require("mason-lspconfig").setup({
ensure_installed = { ensure_installed = {
"lua_ls", "lua_ls", "pyright", "ruff", "tsserver", "html", "cssls",
"pyright", "tailwindcss", "bashls", "jsonls", "yamlls", "dockerls"
"ruff",
"ts_ls",
"html",
"cssls",
"tailwindcss",
"bashls",
"jsonls",
"yamlls",
"dockerls",
}, },
}) })
@@ -210,19 +247,20 @@ lspconfig.lua_ls.setup({
settings = { settings = {
Lua = { Lua = {
completion = { callSnippet = "Replace" }, completion = { callSnippet = "Replace" },
diagnostics = { globals = { "vim" } },
workspace = { checkThirdParty = false },
telemetry = { enable = false },
}, },
}, },
}) })
-- Configure other LSP servers similarly for _, server in ipairs({ "pyright", "tsserver", "html", "cssls", "bashls", "jsonls" }) do
for _, server in ipairs({ "pyright", "ts_ls", "html", "cssls" }) do
lspconfig[server].setup({ capabilities = capabilities }) lspconfig[server].setup({ capabilities = capabilities })
end end
-- Advanced Completion Setup -- Completion Setup
local cmp = require("cmp") local cmp = require("cmp")
local luasnip = require("luasnip") local luasnip = require("luasnip")
require("luasnip.loaders.from_vscode").lazy_load() require("luasnip.loaders.from_vscode").lazy_load()
local has_words_before = function() local has_words_before = function()
@@ -260,7 +298,10 @@ cmp.setup({
end end
end, { "i", "s" }), end, { "i", "s" }),
["<CR>"] = cmp.mapping.confirm({ select = true }), ["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = false,
}),
["<C-Space>"] = cmp.mapping.complete(), ["<C-Space>"] = cmp.mapping.complete(),
}), }),
sources = cmp.config.sources({ sources = cmp.config.sources({
@@ -269,41 +310,54 @@ cmp.setup({
{ name = "path" }, { name = "path" },
{ name = "buffer" }, { name = "buffer" },
}), }),
formatting = {
format = function(entry, item)
item.menu = ({
nvim_lsp = "[LSP]",
luasnip = "[Snippet]",
buffer = "[Buffer]",
path = "[Path]",
})[entry.source.name]
return item
end,
},
}) })
-- ====================== -- ======================
-- 5. Key Mappings -- 5. Key Mappings
-- ====================== -- ======================
-- Navigation
-- 🚀 General Keybinds
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float) vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float)
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev) vim.keymap.set("n", "[d", vim.diagnostic.goto_prev)
vim.keymap.set("n", "]d", vim.diagnostic.goto_next) vim.keymap.set("n", "]d", vim.diagnostic.goto_next)
-- File Management
vim.keymap.set("n", "<leader>n", ":Neotree toggle<CR>") vim.keymap.set("n", "<leader>n", ":Neotree toggle<CR>")
vim.keymap.set("n", "<leader>ff", ":Telescope find_files<CR>") vim.keymap.set("n", "<leader>ff", ":Telescope find_files<CR>")
vim.keymap.set("n", "<leader>fg", ":Telescope live_grep<CR>") vim.keymap.set("n", "<leader>fg", ":Telescope live_grep<CR>")
vim.keymap.set("n", "<leader>gs", ":Git<CR>")
vim.keymap.set("n", "<leader>gg", ":LazyGit<CR>")
-- LSP -- 📝 Editing
vim.keymap.set("n", "gd", vim.lsp.buf.definition) vim.keymap.set("n", "gd", vim.lsp.buf.definition)
vim.keymap.set("n", "gr", vim.lsp.buf.references) vim.keymap.set("n", "gr", vim.lsp.buf.references)
vim.keymap.set("n", "K", vim.lsp.buf.hover) vim.keymap.set("n", "K", vim.lsp.buf.hover)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename) vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename)
-- Git -- 💻 LSP
vim.keymap.set("n", "<leader>gs", ":Git<CR>") vim.keymap.set("n", "<leader>d", vim.diagnostic.setloclist)
vim.keymap.set("n", "<leader>gg", ":LazyGit<CR>") vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action)
vim.keymap.set("n", "<leader>f", function() vim.lsp.buf.format({ async = true }) end)
vim.keymap.set("n", "<leader>wa", vim.lsp.buf.add_workspace_folder)
vim.keymap.set("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder)
vim.keymap.set("n", "<leader>wl", function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end)
-- 💾 Buffer Management
vim.keymap.set("n", "<leader>bd", ":bdelete<CR>")
vim.keymap.set("n", "<leader>bn", ":bnext<CR>")
vim.keymap.set("n", "<leader>bp", ":bprevious<CR>")
vim.keymap.set("n", "<leader>bl", ":Telescope buffers<CR>")
-- 🐱 Git
vim.keymap.set("n", "<leader>gc", ":Git commit<CR>")
vim.keymap.set("n", "<leader>gp", ":Git push<CR>")
vim.keymap.set("n", "<leader>gl", ":Telescope git_commits<CR>")
vim.keymap.set("n", "<leader>gd", ":Gdiff<CR>")
vim.keymap.set("n", "<leader>gb", ":Git blame<CR>")
-- 🔄 Terminal
vim.keymap.set("t", "<C-\\>", "<C-\\><C-n>") -- Escape terminal mode
vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>") -- Alternative escape
vim.keymap.set("n", "<leader>tt", ":ToggleTerm<CR>")
vim.keymap.set("n", "<leader>tf", ":ToggleTerm direction=float<CR>")
-- ====================== -- ======================
-- 6. Autocommands -- 6. Autocommands
@@ -322,8 +376,18 @@ vim.api.nvim_create_autocmd("BufWritePre", {
end, end,
}) })
print("🚀 Neovim configuration fully loaded with:") -- Enable treesitter
print(" - VSCode-like tab completion") require("nvim-treesitter.configs").setup({
print(" - Enhanced LSP support") ensure_installed = { "lua", "python", "javascript", "typescript", "html", "css", "bash", "json", "yaml" },
print(" - Git integration") highlight = { enable = true },
print(" - Beautiful UI components") indent = { enable = true },
})
-- ======================
-- 7. Final Setup
-- ======================
print("🚀 Neovim configuration fully loaded with all keybindings:")
print(" - General navigation and file management")
print(" - Advanced editing and LSP features")
print(" - Complete Git integration")
print(" - Terminal and buffer management")