------------------------------------------------------------------------------- -- 1. Leader Keys & Timeout Options ------------------------------------------------------------------------------- vim.keymap.set("", "", "Nop") vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' ------------------------------------------------------------------------------- -- 2. Built-in Plugin Manager (vim.pack) ------------------------------------------------------------------------------- vim.pack.add({ 'https://github.com/RomanAverin/charleston.nvim', 'https://github.com/nvim-tree/nvim-web-devicons', 'https://github.com/nvim-lualine/lualine.nvim', 'https://github.com/stevearc/oil.nvim', 'https://github.com/nvim-lua/plenary.nvim', 'https://github.com/nvim-telescope/telescope.nvim', 'https://github.com/nvimdev/dashboard-nvim', }) ------------------------------------------------------------------------------- -- 3. Options ------------------------------------------------------------------------------- local opt = vim.opt opt.showmode = false opt.number = true opt.relativenumber = true opt.tabstop = 4 opt.shiftwidth = 4 opt.expandtab = true opt.autoindent = true opt.smartindent = true opt.background = "dark" opt.signcolumn = "yes" opt.cursorline = true opt.listchars = "tab: ,multispace:| ,eol:󰌑" opt.list = true opt.clipboard = "unnamedplus" opt.timeoutlen = 2000 -- opt.timeout = false ------------------------------------------------------------------------------- -- 4. Plugin Configurations & Colorscheme ------------------------------------------------------------------------------- -- Colorscheme vim.cmd.colorscheme('charleston') -- Lualine require('lualine').setup({ options = { theme = 'charleston', component_separators = { left = '', right = '' }, section_separators = { left = '', right = '' }, globalstatus = true, }, sections = { lualine_a = { 'mode' }, lualine_b = { 'branch', 'diff', 'diagnostics' }, lualine_c = { 'filename' }, lualine_x = { 'encoding', 'fileformat', 'filetype' }, lualine_y = { 'progress' }, lualine_z = { 'location' }, }, }) -- Oil require('oil').setup({ default_file_explorer = true, delete_to_trash = true, skip_confirm_for_simple_edits = true, view_options = { show_hidden = true, }, }) -- Telescope require('telescope').setup({ defaults = { path_display = { "smart" }, file_ignore_patterns = { "node_modules", ".git/" }, }, }) -- Dashboard require('dashboard').setup({ theme = 'doom', config = { header = { " ", " ███╗ ██╗ ███████╗ ██████╗ ██╗ ██╗ ██╗ ███╗ ███╗", " ████╗ ██║ ██╔════╝██╔═══██╗ ██║ ██║ ██║ ████╗ ████║", " ██╔██╗ ██║ █████╗ ██║ ██║ ██║ ██║ ██║ ██╔████╔██║", " ██║╚██╗██║ ██╔══╝ ██║ ██║ ╚██╗ ██╔╝ ██║ ██║╚██╔╝██║", " ██║ ╚████║ ███████╗╚██████╔╝ ╚████╔╝ ██║ ██║ ╚═╝ ██║", " ╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝", " ", }, center = { { icon = ' ', desc = 'Find File ', action = 'Telescope find_files', key = 'f' }, { icon = ' ', desc = 'Find Text ', action = 'Telescope live_grep', key = 't' }, { icon = ' ', desc = 'Recent Files ', action = 'Telescope oldfiles', key = 'r' }, { icon = ' ', desc = 'File Explorer ', action = 'Oil', key = 'e' }, { icon = ' ', desc = 'New File ', action = 'ene | startinsert', key = 'n' }, { icon = '󰈆 ', desc = 'Quit Neovim ', action = 'qa', key = 'q' }, }, footer = { "", "⚡ Neovim 0.12 Minimal Config" }, }, }) ------------------------------------------------------------------------------- -- 5. Keymaps ------------------------------------------------------------------------------- local keymap = vim.keymap.set local opts = { silent = true } -- File & Quit shortcuts keymap('n', 'w', 'write', opts) keymap('n', 'q', 'quit', opts) keymap('n', 'QQ', 'q!', opts) keymap('n', 'wq', 'wq', opts) -- UI Toggles keymap('n', 'r', 'set wrap!', opts) keymap('n', 'n', 'set number! relativenumber!', opts) -- File Explorer (Oil) keymap('n', '-', function() require('oil').open() end, { desc = 'Open parent directory in Oil' }) keymap('n', 'e', function() require('oil').open() end, { desc = 'Open parent directory in Oil' }) -- Telescope Keymaps local builtin = require('telescope.builtin') keymap('n', 'ff', builtin.find_files, { desc = 'Find files' }) keymap('n', 'fg', builtin.live_grep, { desc = 'Live grep search' }) keymap('n', 'fb', builtin.buffers, { desc = 'Find open buffers' }) keymap('n', 'fh', builtin.help_tags, { desc = 'Find help tags' })