From ff268625bac52a28017c304e2d1ba2866b020ee5 Mon Sep 17 00:00:00 2001 From: Rosa Date: Tue, 17 Feb 2026 03:07:04 +0100 Subject: [PATCH] feat(nvim): add nvim config --- .config/nvim/init.lua | 4 + .config/nvim/lua/colors/paradise.lua | 101 ++++++++++++++++++++++ .config/nvim/lua/keybinds.lua | 51 +++++++++++ .config/nvim/lua/options.lua | 8 ++ .config/nvim/lua/plugins.lua | 87 +++++++++++++++++++ .config/nvim/lua/setup/autopairs.lua | 1 + .config/nvim/lua/setup/barbar.lua | 10 +++ .config/nvim/lua/setup/lualine.lua | 7 ++ .config/nvim/lua/setup/nvim-colorizer.lua | 1 + .config/nvim/lua/setup/nvim-tree.lua | 7 ++ 10 files changed, 277 insertions(+) create mode 100644 .config/nvim/init.lua create mode 100644 .config/nvim/lua/colors/paradise.lua create mode 100644 .config/nvim/lua/keybinds.lua create mode 100644 .config/nvim/lua/options.lua create mode 100644 .config/nvim/lua/plugins.lua create mode 100644 .config/nvim/lua/setup/autopairs.lua create mode 100644 .config/nvim/lua/setup/barbar.lua create mode 100644 .config/nvim/lua/setup/lualine.lua create mode 100644 .config/nvim/lua/setup/nvim-colorizer.lua create mode 100644 .config/nvim/lua/setup/nvim-tree.lua diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..1e7c4ad --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,4 @@ +require('keybinds') +require('plugins') +require('options') +require('colors.paradise') diff --git a/.config/nvim/lua/colors/paradise.lua b/.config/nvim/lua/colors/paradise.lua new file mode 100644 index 0000000..a414876 --- /dev/null +++ b/.config/nvim/lua/colors/paradise.lua @@ -0,0 +1,101 @@ +local base16 = require("base16") + +_G.paradise_dark = base16.theme_from_array({ + "151515", + "1f1f1f", + "282828", + "404040", + "e8e3e3", + "e8e3e3", + "e8e3e3", + "e8e3e3", + "b66467", + "d9bc8c", + "d9bc8c", + "8c977d", + "8aa6a2", + "8da3b9", + "a988b0", + "e8e3e3", +}) +base16(_G.paradise_dark, true) + +vim.api.nvim_command([[ + exe "hi StatusInactive guibg=background guifg=".g:terminal_color_8 + exe "hi StatusNormal guifg=background guibg=".g:terminal_color_2 + exe "hi StatusReplace guifg=background guibg=".g:terminal_color_1 + exe "hi StatusInsert guifg=background guibg=".g:terminal_color_2 + exe "hi StatusCommand guifg=background guibg=".g:terminal_color_3 + exe "hi StatusVisual guifg=background guibg=".g:terminal_color_4 + exe "hi StatusTerminal guifg=background guibg=".g:terminal_color_5 + + exe "hi FocusedSymbol guifg=".g:terminal_color_4 + exe "hi NeoTreeModified guifg=".g:terminal_color_9 + exe "hi NeoTreeIndentMarker guifg=".g:terminal_color_8 + exe "hi NeoTreeGitAdded guifg=".g:terminal_color_2 + exe "hi NeoTreeGitDeleted guifg=".g:terminal_color_9 + exe "hi NeoTreeGitRenamed guifg=".g:terminal_color_13 + exe "hi NeoTreeGitConflict guifg=".g:terminal_color_3 + exe "hi NeoTreeGitUntracked guifg=".g:terminal_color_9 + exe "hi NeoTreeGitModified guifg=".g:terminal_color_3 + + exe "hi CmpItemKindFunction guibg=NONE guifg=".g:terminal_color_15 + exe "hi CmpItemKindMethod guibg=NONE guifg=".g:terminal_color_15 + exe "hi CmpItemKindVariable guibg=NONE guifg=".g:terminal_color_14 + exe "hi CmpItemKindKeyword guibg=NONE guifg=".g:terminal_color_5 + exe "hi CmpItemKindText guifg=".g:terminal_color_10 + exe "hi CmpItemKindConstructor guifg=".g:terminal_color_11 + exe "hi CmpItemKindField guifg=".g:terminal_color_14 + exe "hi CmpItemKindClass guifg=".g:terminal_color_10 + exe "hi CmpItemKindInterface guifg=".g:terminal_color_10 + exe "hi CmpItemKindModule guifg=".g:terminal_color_14 + exe "hi CmpItemKindProperty guifg=".g:terminal_color_14 + exe "hi CmpItemKindValue guifg=".g:terminal_color_10 + exe "hi CmpItemKindEnum guifg=".g:terminal_color_10 + exe "hi CmpItemKindSnippet guifg=".g:terminal_color_12 + exe "hi CmpItemKindFile guifg=".g:terminal_color_14 + exe "hi CmpItemKindEnumMember guifg=".g:terminal_color_14 + exe "hi CmpItemKindConstant guifg=".g:terminal_color_11 + exe "hi CmpItemKindStruct guifg=".g:terminal_color_10 + exe "hi CmpItemKindTypeParameter guifg=".g:terminal_color_10 + + exe "hi DiagnosticError guifg=".g:terminal_color_9 + exe "hi DiagnosticWarn guifg=".g:terminal_color_3 + exe "hi DiagnosticInfo guifg=".g:terminal_color_14 + exe "hi DiagnosticHint guifg=".g:terminal_color_12 + + exe "hi Hlargs guifg=".g:terminal_color_1 + + hi EndOfBuffer guifg=background + hi LineNr guibg=background + hi LineNr guifg=#424242 + hi SignColumn guibg=background + hi VertSplit guibg=background + + hi! link TabLineSel StatusInsert + hi TabLine guibg=#1f1f1f + hi TabLine guifg=#525252 + hi TabLineFill guibg=background + + hi FoldColumn guibg=background + hi DiffAdd guibg=background + hi DiffChange guibg=background + hi DiffDelete guibg=background + hi DiffText guibg=background + + hi Pmenu guibg=background guifg=#424242 + hi PmenuSbar guibg=background guifg=#151515 + hi PmenuThumb guibg=#424242 guifg=#242424 + hi PmenuSel guibg=#242424 guifg=#BBB6B6 + + hi CmpItemAbbrMatch guifg=#e8e3e3 + hi CmpItemAbbrMatchFuzzy guifg=#e8e3e3 + hi CmpItemAbbr guifg=#424242 + hi CmpBorder guifg=#424242 + hi CmpItemMenu guifg=#888888 + + hi NormalFloat guifg=#e8e3e3 + hi NormalFloat guibg=none + + hi WinSeparator guifg=#1f1f1f +]]) diff --git a/.config/nvim/lua/keybinds.lua b/.config/nvim/lua/keybinds.lua new file mode 100644 index 0000000..e5c43ce --- /dev/null +++ b/.config/nvim/lua/keybinds.lua @@ -0,0 +1,51 @@ +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +local map = vim.api.nvim_set_keymap +local opts = { noremap = true, silent = true } + +map('n', 'd', '"_d', opts) +map('v', 'd', '"_d', opts) + +-- Update plugins +map('n', 'u', ':PackerSync', opts) + +-- New file +map('n', 'n', 'enew', opts) + +-- Resize splits +map('n', '', ':vertical resize -3', opts) +map('n', '', ':vertical resize +3', opts) +map('n', '', ':resize +3', opts) +map('n', '', ':resize -3', opts) + +-- Nvim-tree.lua +map('n', 'e', ':NvimTreeToggle', opts) +map('n', 'f', ':NvimTreeFindFile', opts) + +-- Toggleterm +map('n', 't', ':ToggleTerm size=50 direction=vertical', opts) +map('n', 'T', ':ToggleTerm size=10 direction=horizontal', opts) + +-- barbar mappings +map('n', '', ':BufferPrevious', opts) +map('n', '', ':BufferNext', opts) + +map('n', '', ':BufferMovePrevious', opts) +map('n', '>', ' :BufferMoveNext', opts) + +map('n', '', ':BufferGoto 1', opts) +map('n', '', ':BufferGoto 2', opts) +map('n', '', ':BufferGoto 3', opts) +map('n', '', ':BufferGoto 4', opts) +map('n', '', ':BufferGoto 5', opts) +map('n', '', ':BufferGoto 6', opts) +map('n', '', ':BufferGoto 7', opts) +map('n', '', ':BufferGoto 8', opts) +map('n', '', ':BufferGoto 9', opts) +map('n', '', ':BufferLast', opts) + +map('n', '', ':BufferClose', opts) + +-- Compile a C file +map('n', 'c', ':w:!gcc % -o %:r && ./%:r:botright 15split | term ./%:r:startinsert', opts) diff --git a/.config/nvim/lua/options.lua b/.config/nvim/lua/options.lua new file mode 100644 index 0000000..b60ab96 --- /dev/null +++ b/.config/nvim/lua/options.lua @@ -0,0 +1,8 @@ +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 +vim.opt.termguicolors = true +vim.o.number = true +vim.o.mouse = 'a' +vim.o.ignorecase = true +vim.o.syntax = 'on' +vim.o.clipboard = "unnamedplus" -- Install wl-clipboard or xclip diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua new file mode 100644 index 0000000..bda251f --- /dev/null +++ b/.config/nvim/lua/plugins.lua @@ -0,0 +1,87 @@ +local fn = vim.fn + +-- Automatically install packer +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, + } + print "Installing packer close and reopen Neovim..." + vim.cmd [[packadd packer.nvim]] +end + +-- Autocommand that reloads neovim whenever you save the plugins.lua file +vim.cmd [[ + augroup packer_user_config + autocmd! + autocmd BufWritePost plugins.lua source | PackerSync + augroup end +]] + +-- Use a protected call so we don't error out on first use +local status_ok, packer = pcall(require, "packer") +if not status_ok then + return +end + +-- Have packer use a popup window +packer.init { + display = { + open_fn = function() + return require("packer.util").float { border = "rounded" } + end, + }, +} + +-- returns the require for use in `config` parameter of packer's use +-- expects the name of the config file +function get_setup(name) + return string.format('require("setup/%s")', name) +end + +-- Plugins +local plugins = { + -- Core + { 'wbthomason/packer.nvim' }, + + -- Utils + { 'nathom/filetype.nvim' }, + { 'sheerun/vim-polyglot' }, + { 'kyazdani42/nvim-tree.lua', config = get_setup('nvim-tree') }, + { 'windwp/nvim-autopairs', config = get_setup('autopairs') }, + { 'norcalli/nvim-colorizer.lua', config = get_setup('nvim-colorizer') }, + { 'norcalli/nvim-base16.lua' }, + {"akinsho/toggleterm.nvim", tag = '*', config = function() require("toggleterm").setup() end}, + + -- Ui + { 'kyazdani42/nvim-web-devicons'}, + { 'ryanoasis/vim-devicons' }, + + -- Statusline + { + 'nvim-lualine/lualine.nvim', + config = get_setup('lualine'), + requires = { 'kyazdani42/nvim-web-devicons', opt = true }, + }, + + -- Statusbar + { 'romgrk/barbar.nvim', config = get_setup('barbar') }, +} + +-- Load Plugins +return packer.startup(function(use) + for _, v in pairs(plugins) do + use(v) + end + + + -- Automatically set up your configuration after cloning packer.nvim + if PACKER_BOOTSTRAP then + require("packer").sync() + end +end) diff --git a/.config/nvim/lua/setup/autopairs.lua b/.config/nvim/lua/setup/autopairs.lua new file mode 100644 index 0000000..620f4f4 --- /dev/null +++ b/.config/nvim/lua/setup/autopairs.lua @@ -0,0 +1 @@ +require("nvim-autopairs").setup{} diff --git a/.config/nvim/lua/setup/barbar.lua b/.config/nvim/lua/setup/barbar.lua new file mode 100644 index 0000000..c279050 --- /dev/null +++ b/.config/nvim/lua/setup/barbar.lua @@ -0,0 +1,10 @@ +vim.g.barbar_auto_setup = false -- disable auto-setup +require('barbar').setup({ + auto_hide = false, + animation = false, + closable = true, + clickable = true, + insert_at_end = true, + minimum_padding = 1, + maximum_padding = 1, +}) diff --git a/.config/nvim/lua/setup/lualine.lua b/.config/nvim/lua/setup/lualine.lua new file mode 100644 index 0000000..0af7108 --- /dev/null +++ b/.config/nvim/lua/setup/lualine.lua @@ -0,0 +1,7 @@ +require('lualine').setup { + options = { + icons_enabled = true, + component_separators = { left = '', right = '|'}, + section_separators = { left = '', right = ''}, + }, +} diff --git a/.config/nvim/lua/setup/nvim-colorizer.lua b/.config/nvim/lua/setup/nvim-colorizer.lua new file mode 100644 index 0000000..0d6d6f3 --- /dev/null +++ b/.config/nvim/lua/setup/nvim-colorizer.lua @@ -0,0 +1 @@ +require('colorizer').setup{} diff --git a/.config/nvim/lua/setup/nvim-tree.lua b/.config/nvim/lua/setup/nvim-tree.lua new file mode 100644 index 0000000..cd90abd --- /dev/null +++ b/.config/nvim/lua/setup/nvim-tree.lua @@ -0,0 +1,7 @@ +require('nvim-tree').setup({ + view = { + side = "left", + }, + hijack_cursor = true, + update_cwd = true, +})