Skip to content

kovs713/nvim-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neovim Config

My personal Lua-based Neovim configuration. Focused on productivity, modern UI, and developer tools (likely for TypeScript development).

Installation

  1. Backup your current Neovim config: mv ~/.config/nvim ~/.config/nvim.bak
  2. Clone this repo: git clone https://github.com/kovs713/nvim-config.git ~/.config/nvim
  3. Launch Neovim: nvim (plugins will auto-install via lazy.nvim)

Overview

This config uses lazy.nvim for plugin management, with plugins organized into enabled/disabled folders and categorized for easy maintenance. It includes LSP support, Obsidian notes tooling, Treesitter syntax, Git integration, and more.

Features

  • Modern UI: Customizable dashboard, statusline, notifications, and markdown rendering.
  • Coding Tools: LSP with diagnostics, code actions, refactoring, formatting, and linting.
  • Syntax & Completion: Treesitter-based highlighting, auto-tagging, Tailwind/Emmet support, and fast completion.
  • Editing Enhancements: Auto-pairs, comments, TODO highlighting, and indentation visualization.
  • Navigation: Fuzzy finders, file explorers, quick jumps, and window management.
  • Git Integration: Signs for changes, hunk staging, blame, and diffs.
  • Productivity: Note-taking with Obsidian, time tracking, Discord presence, and image pasting.
  • Modular Mini.nvim: Lightweight modules for surroundings, textobjects, icons, and more.
  • Customization: Easily enable/disable plugins by moving files between folders.

Requirements

  • Neovim v0.11.4
  • Git (for repo management).
  • Node.js (for some LSP servers like TypeScript).
  • Optional: ripgrep (for faster searching), fd (for file finding), ImageMagick (for image previews).

Screenshots

Mini-starter

mini-starter

Snacks projects util

snacks-projects-util

Lazygit integration

lazygit-integration

Gitsigns support

gitsigns

LSP support

lsp-support

Fzf and grep finder

fzf-grep-finder

Obsidian daily note taking

obsidian-dailies

Markdown render support

render-markdown

Discord RPC support

discord

Keymaps

Common Keymaps
Mode Key Action Description
leaders <cmd>wall<CR> Save all buffers
Ctrl + a ggVG Select all
Ctrl + d <C-d>zz -
Ctrl + u <C-u>zz -
J :m '>+1<CR>gv=gv Move line down in Visual mode
K :m '<-2<CR>gv=gv Move line up in Visual mode
n nzz -
N Nzz -
* *zz -
# #zz -
g* g*zz -
g# g#zz -
< <g -
> >g -
p "_dP Paste without saving
Ⓝ,Ⓥ,Ⓞ H ^ Go to start of line
Ⓝ,Ⓥ,Ⓞ L g_ Go to end of line
Ctrl + i <C-o> Replace goto next
Ctrl + o <C-i> Replace goto prev
Esc <cmd>noh<CR> Clear search
TypeScript Tools
Mode Key Action Description
leaderrf <cmd>TSToolsRenameFile<CR> TS [R]ename [F]ile + Fix Imports
leaderoi <cmd>TSToolsOrganizeImports<CR> TS Tools Organize [I]mports
Refactoring.nvim
Mode Key Action Description
leaderrr require('refactoring').select_refactor { prefer_ex_cmd = true } Refactor…
leaderre require('refactoring').refactor 'Extract Function' Extract Function
leaderrv require('refactoring').refactor 'Extract Variable' Extract Variable
leaderrI require('refactoring').refactor 'Inline Function' Inline Function
leaderri require('refactoring').refactor 'Inline Variable' Inline Variable
Gitsigns.nvim
Mode Key Action Description
]h gitsigns.nav_hunk 'next' (or vim.cmd.normal in diff) Jump to next git [c]hange
[h gitsigns.nav_hunk 'prev' (or vim.cmd.normal in diff) Jump to previous git [c]hange
leadergs gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } [g]it [s]tage hunk
leadergr gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } [g]it [r]eset hunk
leadergs gitsigns.stage_hunk [g]it [s]tage hunk
leadergr gitsigns.reset_hunk [g]it [r]eset hunk
leadergS gitsigns.stage_buffer [g]it [S]tage buffer
leadergu gitsigns.stage_hunk [g]it [u]ndo stage hunk
leadergR gitsigns.reset_buffer [g]it [R]eset buffer
leadergp gitsigns.preview_hunk [g]it [p]review hunk
leadergb gitsigns.blame_line [g]it [b]lame line
leadergd gitsigns.diffthis [g]it [d]iff against index
leadergD gitsigns.diffthis '@' [g]it [D]iff against last commit
leadertb gitsigns.toggle_current_line_blame [T]oggle git show [b]lame line
leadertD gitsigns.preview_hunk_inline [T]oggle git show [D]eleted
Todo-Comments.nvim
Mode Key Action Description
leaderft <cmd>TodoFzfLua<CR> [F]zfLua [T]odo Comments
Which-Key.nvim
Mode Key Action Description
- leader? require('which-key').show { global = false } Buffer Local Keymaps (which-key)
Obsidian.nvim
Mode Key Action Description
leaderod <cmd>Obsidian dailies<cr> [O]bsidian [D]ailies
leaderont <cmd>Obsidian today<cr> [O]bsidian [N]ew [T]oday
leaderony <cmd>Obsidian yesterday<cr> [O]bsidian [N]ew [Y]esterday
leaderonn <cmd>Obsidian new<cr> [O]bsidian [N]ew [N]ote
leaderos <cmd>Obsidian search<cr> [O]bsidian [S]earch
gf obsidian.util.gf_passthrough() [G]oto markdown [F]ile
Enter obsidian.util.smart_action() Obsidian smart action
Tab require('obsidian.api').nav_link 'next' Go to next link
Shift + Tab require('obsidian.api').nav_link 'prev' Go to previous link
Lspsaga.nvim
Mode Key Action Description
leaderlh <cmd>Lspsaga hover_doc<CR> [L]sp [H]over Doc
leaderlR <cmd>Lspsaga rename<CR> [L]sp [R]ename
leaderld <cmd>Lspsaga peek_definition<CR> [L]sp Peek [D]efinition
leader[d <cmd>Lspsaga diagnostic_jump_prev<CR> [D]iagnostic next
leader]d <cmd>Lspsaga diagnostic_jump_next<CR> [D]iagnostic prev
gd <cmd>Lspsaga goto_definition<CR> [G]oto [D]efinition
leaderlr require('fzf-lua').lsp_references() [L]sp Peek [R]eferences
leaderle lua vim.diagnostic.open_float() [L]sp Diagnostic Float [E]
Winshift.nvim and Windows
Mode Key Action Description
Ctrl + Wm <Cmd>WinShift<CR> Toggle WinShift mode
Ctrl + Alt + h <cmd>WinShift left<CR> Move window left [h]
Ctrl + Alt + j <cmd>WinShift down<CR> Move window down [j]
Ctrl + Alt + k <cmd>WinShift up<CR> Move window up [k]
Ctrl + Alt + l <cmd>WinShift right<CR> Move window right [l]
Alt + h <C-w>h Moving to the window left [h]
Alt + j <C-w>j Moving to the window down [j]
Alt + k <C-w>k Moving to the window up [k]
Alt + l <C-w>l Moving to the window right [l]
Alt + = <C-w>+ Resize window + (increase horizontal)
Alt + - <C-w>- Resize window - (decrease horizontal)
Alt + . <C-w>< Resize window < (increase vertical)
Alt + , <C-w>> Resize window > (decrease vertical)
Harpoon.nvim
Mode Key Action Description
leadera harpoon:list():add() Harpoon [A]dd file
leaderE harpoon.ui:toggle_quick_menu(harpoon:list()) Harpoon m[E]nu
Ctrl + h harpoon:list():select(1) Harpoon select 1
Ctrl + j harpoon:list():select(2) Harpoon select 2
Ctrl + k harpoon:list():select(3) Harpoon select 3
Ctrl + l harpoon:list():select(4) Harpoon select 4
Alt + i harpoon:list():prev() Harpoon goto prev
Alt + o harpoon:list():next() Harpoon goto next
Neo-Tree.nvim
Mode Key Action Description
leaderef Neotree toggle float Open Neo-Tree [E]xplorer [F]loating
leaderer Neotree toggle position=right Open Neo-Tree [E]xplorer on the [R]ight
LSPConfig
Mode Key Action Description
Ⓝ,Ⓥ leaderca require('fzf-lua').lsp_code_actions() [C]ode [A]ctions
Ⓝ,Ⓥ leaderll <cmd>LspRestart<CR> [L][L]sp Restart
leaderli require('fzf-lua').lsp_implementations() [L]sp [I]mplimentations
Emmet
Mode Key Action Description
Ⓝ,Ⓥ leaderwe require('nvim-emmet').wrap_with_abbreviation [W]rap [E]lement

Plugins by Category

Plugins are organized into categories under plugins/enabled/. Each category contains individual .lua files for plugin configs.

Category Plugin Repo Description
Appearance colorizer NvChad/nvim-colorizer.lua High-performance color highlighter for code.
Appearance dressing stevearc/dressing.nvim Improves default vim.ui interfaces like input and select.
Appearance incline b0o/incline.nvim Floating statuslines for windows (winbar alternative).
Appearance mini-starter echasnovski/mini.nvim Minimalistic start screen module.
Appearance mini-statusline echasnovski/mini.nvim Configurable, compact or fancy statusline.
Appearance render-markdown MeanderingProgrammer/render-markdown.nvim Improves viewing Markdown files in Neovim.
Appearance rosepine rose-pine/neovim Soho vibes colorscheme for Neovim.
Cmp blink-cmp Saghen/blink.cmp Performant, batteries-included completion plugin.
LSP debug mfussenegger/nvim-dap Debug Adapter Protocol client implementation.
LSP lazydev folke/lazydev.nvim Faster LuaLS setup for editing Neovim configs.
LSP lspconfig neovim/nvim-lspconfig Quickstart configs for Nvim LSP.
LSP lspsaga nvimdev/lspsaga.nvim Lightweight LSP plugin with performant UI.
LSP mason mason-org/mason.nvim Portable package manager for installing LSP servers, linters, etc.
Formatting conform stevearc/conform.nvim Lightweight yet powerful formatter plugin.
Formatting lint mfussenegger/nvim-lint Asynchronous linter plugin.
Syntax emmet olrtg/nvim-emmet Emmet abbreviation and expansion for Neovim.
Syntax nvim-treesitter nvim-treesitter/nvim-treesitter Treesitter configurations and abstraction layer.
Syntax tailwind-tools luckasRanarison/tailwind-tools.nvim Unofficial Tailwind CSS integration and tooling.
Syntax ts-autotag windwp/nvim-ts-autotag Uses Treesitter to auto-close and rename tags.
Syntax typescript-tools pmizio/typescript-tools.nvim TypeScript integration with LSP features.
Editing autopairs windwp/nvim-autopairs Autopairs written in Lua.
Editing bullets bullets-vim/bullets.vim Automated bullet and numbered lists for Markdown.
Editing comment numToStr/Comment.nvim Smart and powerful commenting.
Editing refactoring ThePrimeagen/refactoring.nvim Refactoring library based on Martin Fowler's book.
Editing sleuth tpope/vim-sleuth Heuristically sets shiftwidth and expandtab.
Editing todo-comments folke/todo-comments.nvim Highlights and searches TODO comments.
Navigation flash folke/flash.nvim Enhances search with labels for quick jumps.
Navigation fzf ibhagwan/fzf-lua Improved fzf.vim written in Lua.
Navigation harpoon ThePrimeagen/harpoon Per-project marks for fast file navigation.
Navigation neo-tree nvim-neo-tree/neo-tree.nvim File system and tree-like structure manager.
Navigation snacks folke/snacks.nvim Collection of lightweight Neovim plugins.
Navigation trouble folke/trouble.nvim Pretty diagnostics, references, and lists.
Navigation which-key folke/which-key.nvim Displays possible keybindings in popup.
Navigation winshift sindrets/winshift.nvim Rearranges windows with ease.
Git gitsigns lewis6991/gitsigns.nvim Git integration with signs for changes.
Productivity cord vyfor/cord.nvim Discord Rich Presence for Neovim.
Productivity img-clip HakonHarnes/img-clip.nvim Effortlessly embeds images into markup.
Productivity obsidian epwalsh/obsidian.nvim Obsidian vault integration for notes.
Productivity wakatime wakatime/vim-wakatime Automatic time tracking for coding.
Mini mini-surround echasnovski/mini.nvim Fast and feature-rich surround actions.
Mini mini-ai echasnovski/mini.nvim Extends and creates a/i textobjects.
Mini mini-icons echasnovski/mini.nvim Icon provider with caching and customization.
Mini mini-pairs echasnovski/mini.nvim Minimal and fast autopair module.
Mini mini-indentscope echasnovski/mini.nvim Visualizes and operates on indent scopes.
Mini mini-cursorword echasnovski/mini.nvim Auto-highlights word under cursor.

Contributing

Feel free to fork and submit pull requests for improvements, bug fixes, or new features.

License

MIT License - see LICENSE for details.

About

My personal Nvim lua configuration

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages