136 lines
5.4 KiB
Lua
136 lines
5.4 KiB
Lua
-------------------------------------------------------------------------------
|
|
-- 1. Leader Keys & Timeout Options
|
|
-------------------------------------------------------------------------------
|
|
vim.keymap.set("", "<Space>", "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', '<leader>w', '<cmd>write<CR>', opts)
|
|
keymap('n', '<leader>q', '<cmd>quit<CR>', opts)
|
|
keymap('n', '<leader>QQ', '<cmd>q!<CR>', opts)
|
|
keymap('n', '<leader>wq', '<cmd>wq<CR>', opts)
|
|
|
|
-- UI Toggles
|
|
keymap('n', '<leader>r', '<cmd>set wrap!<CR>', opts)
|
|
keymap('n', '<leader>n', '<cmd>set number! relativenumber!<CR>', opts)
|
|
|
|
-- File Explorer (Oil)
|
|
keymap('n', '-', function() require('oil').open() end, { desc = 'Open parent directory in Oil' })
|
|
keymap('n', '<leader>e', function() require('oil').open() end, { desc = 'Open parent directory in Oil' })
|
|
|
|
-- Telescope Keymaps
|
|
local builtin = require('telescope.builtin')
|
|
keymap('n', '<leader>ff', builtin.find_files, { desc = 'Find files' })
|
|
keymap('n', '<leader>fg', builtin.live_grep, { desc = 'Live grep search' })
|
|
keymap('n', '<leader>fb', builtin.buffers, { desc = 'Find open buffers' })
|
|
keymap('n', '<leader>fh', builtin.help_tags, { desc = 'Find help tags' })
|