Skip to content

R7rainz/neovim-conf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

51 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Neovim Config

Neovim Dashboard

A modern, feature-rich Neovim configuration built on LazyVim with support for multiple programming languages, elegant UI enhancements, and powerful development tools. Tuned for Neovide, smooth scrolling, Discord Rich Presence, AI-assisted workflows, and rich Treesitter-powered syntax highlighting.

โœจ Features

  • LazyVim Foundation: Built on the excellent LazyVim starter template with intelligent lazy-loading
  • Multi-Language Support: First-class support for Python, Go, Java, TypeScript, and Web development
  • Neovide Ready: Fully optimized for Neovide GUI with smooth cursor animations, transparency, padding, and fullscreen controls
  • Beautiful UI: Modern colorschemes with Rosepine Moon as the default, plus Gruvbox and Tokyodark variants
  • Smooth Scrolling: neoscroll.nvim for animated scrolling and comfortable navigation
  • Dashboard & Clean Indent View: Snacks dashboard enabled, with indent guides from indent-blankline and mini.indentscope disabled for a cleaner look
  • Discord Rich Presence: presence.nvim integration with handy keymaps to toggle status
  • AI Assistance: GitHub Copilot completions and Copilot Chat with rich prompts and keybindings
  • Powerful Tools: Integrated development utilities including Docker support, Linux tools, and more
  • Smart Completion: Blink completion engine for lightning-fast code completion
  • File Navigation: NeoTree file explorer with floating and sidebar modes
  • Fuzzy Finding: Telescope for files, live grep, and symbol navigation
  • Relative Line Numbers: Hybrid line numbers for efficient navigation
  • Professional Keybindings: Carefully curated keyboard shortcuts for optimal workflow

๐Ÿ“ธ Screenshots

Below are a few more looks at the setup in action.

Neovim Editing

Focused editing view with LSP, Telescope, smooth scrolling

Neovim Dev Workflow

Dev workflow view with NeoTree, terminal splits, and Copilot integration.

๐Ÿ“‹ Requirements

  • Neovim: v0.9.0 or later
  • Node.js: For LSP and code completion
  • Python: For Python language support and general tools
  • Git: For plugin management with lazy.nvim
  • A Nerd Font: For icons and visual elements (recommended: JetBrains Mono or Fantasque Sans Mono)

Optional Dependencies

  • Docker: For Docker plugin and container development
  • Language Servers: Automatically installed for supported languages

Installation

1. Prerequisites

Ensure you have Neovim 0.9.0+ installed:

nvim --version

Install a Nerd Font. Popular choices:

2. Clone the Configuration

Replace your existing Neovim config:

# Backup your current config if needed
mv ~/.config/nvim ~/.config/nvim.backup

# Clone this configuration
git clone <your-repo-url> ~/.config/nvim

3. Launch Neovim

nvim

Lazy.nvim will automatically:

  • Download and install all plugins
  • Install language servers and tools
  • Set up the development environment

The first startup may take 2-3 minutes as plugins are downloaded and compiled.

๐Ÿ“ Project Structure

.config/nvim/
โ”œโ”€โ”€ init.lua                 # Main entry point with Neovide config
โ”œโ”€โ”€ lazy-lock.json          # Plugin version lock file
โ”œโ”€โ”€ lazyvim.json            # LazyVim configuration metadata
โ”œโ”€โ”€ stylua.toml             # Lua code formatting configuration
โ”‚
โ””โ”€โ”€ lua/
    โ”œโ”€โ”€ config/             # Core configuration
    โ”‚   โ”œโ”€โ”€ autocmds.lua    # Autocommands and event handlers
    โ”‚   โ”œโ”€โ”€ keymaps.lua     # Custom keybindings
    โ”‚   โ”œโ”€โ”€ lazy.lua        # Plugin manager setup
    โ”‚   โ””โ”€โ”€ options.lua     # Editor settings and preferences
    โ”‚
    โ””โ”€โ”€ plugins/            # Plugin specifications and configs
        โ”œโ”€โ”€ colorschemes.lua    # Color theme configurations
        โ”œโ”€โ”€ copilot-chat.lua    # GitHub Copilot + CopilotChat integration
        โ”œโ”€โ”€ docker.lua          # Docker integration
        โ”œโ”€โ”€ example.lua         # Example plugin setup
        โ”œโ”€โ”€ go.lua              # Go language support
        โ”œโ”€โ”€ java.lua            # Java language support
        โ”œโ”€โ”€ linux-tools.lua     # Linux development tools
        โ”œโ”€โ”€ mini.lua            # mini.nvim core plugin
        โ”œโ”€โ”€ neo-tree.lua        # File explorer configuration
        โ”œโ”€โ”€ neoscroll.lua       # Smooth scrolling
        โ”œโ”€โ”€ presence.lua        # Discord Rich Presence
        โ”œโ”€โ”€ python.lua          # Python language support
        โ”œโ”€โ”€ telescope.lua       # Fuzzy finder configuration
        โ”œโ”€โ”€ theme.lua           # UI theme customization
        โ”œโ”€โ”€ treesitter.lua      # Treesitter + context and highlighting
        โ”œโ”€โ”€ typescript.lua      # TypeScript/JavaScript support
        โ”œโ”€โ”€ ui.lua              # UI tweaks, dashboard, and indent settings
        โ””โ”€โ”€ web.lua             # Web development tools
  โ”œโ”€โ”€ config/             # Core configuration
  โ”‚   โ”œโ”€โ”€ autocmds.lua    # Autocommands and event handlers
  โ”‚   โ”œโ”€โ”€ keymaps.lua     # Custom keybindings
  โ”‚   โ”œโ”€โ”€ lazy.lua        # Plugin manager setup
  โ”‚   โ””โ”€โ”€ options.lua     # Editor settings and preferences
  โ”‚
  โ””โ”€โ”€ plugins/            # Plugin specifications and configs
    โ”œโ”€โ”€ colorschemes.lua    # Color theme configurations (with clear header)
    โ”œโ”€โ”€ copilot-chat.lua    # GitHub Copilot + CopilotChat integration
    โ”œโ”€โ”€ docker.lua          # Docker integration
    โ”œโ”€โ”€ example.lua         # Example plugin setup
    โ”œโ”€โ”€ go.lua              # Go language support (with clear header)
    โ”œโ”€โ”€ java.lua            # Java language support (with clear header)
    โ”œโ”€โ”€ linux-tools.lua     # Linux development tools
    โ”œโ”€โ”€ mini.lua            # mini.nvim core plugin
    โ”œโ”€โ”€ neo-tree.lua        # File explorer configuration
    โ”œโ”€โ”€ neoscroll.lua       # Smooth scrolling
    โ”œโ”€โ”€ presence.lua        # Discord Rich Presence
    โ”œโ”€โ”€ python.lua          # Python language support (with clear header)
    โ”œโ”€โ”€ telescope.lua       # Fuzzy finder configuration
    โ”œโ”€โ”€ theme.lua           # UI theme customization
    โ”œโ”€โ”€ treesitter.lua      # Treesitter + context and highlighting
    โ”œโ”€โ”€ typescript.lua      # TypeScript/JavaScript support (with clear header)
    โ”œโ”€โ”€ ui.lua              # UI tweaks, dashboard, and indent settings
    โ””โ”€โ”€ web.lua             # Web development tools (with clear header)

โŒจ๏ธ Key Bindings

General Navigation

Binding Action
<Space> Leader key
<Tab> Next buffer
<S-Tab> Previous buffer
<C-x> Close current buffer
<leader>X Force close buffer (discard changes)
<leader>bo Close other buffers

File Navigation

Binding Action
<leader><Tab> Toggle NeoTree (sidebar left)
<leader>e Toggle NeoTree (floating)
<leader>ff Find files in current directory
<leader>fp Find plugin files

Window Management

Binding Action
<leader>wx Close current window

For more keybindings, see keymaps.lua and the LazyVim documentation.

๐ŸŽจ Customization

Changing the Colorscheme

Edit lua/plugins/colorschemes.lua:

-- Default colorscheme: Rosepine Moon
return {
  {
    "rose-pine/neovim",
    name = "rose-pine",
    priority = 1000,
    lazy = false,
    config = function()
      require("rose-pine").setup({
        variant = "moon",
        styles = { transparency = true },
        disable_background = true,
        disable_float_background = true,
      })
      vim.cmd("colorscheme rose-pine-moon")
    end,
  },
}

Other available themes: Gruvbox (with dark hard and light soft variants) and Tokyodark.

Modifying Editor Settings

Edit lua/config/options.lua to customize:

  • Font and font size
  • Tab width and indentation
  • Line number display
  • Scroll behavior
  • Mouse and clipboard settings

Adding Custom Keybindings

Add new keybindings to lua/config/keymaps.lua:

local map = vim.keymap.set
map("n", "<leader>custom", "<cmd>echo 'Custom binding'<cr>", { desc = "Custom action" })

Enabling Neovide Features

Edit init.lua to customize Neovide-specific settings:

  • Cursor animation styles
  • Opacity and transparency
  • Scroll animations
  • Window blur effects
  • Refresh rate settings

๐Ÿ”ง Language Support

Python

Go

Java

TypeScript/JavaScript

  • LSP: TypeScript-language-server
  • Formatting: Prettier
  • Framework support: React, Vue, Angular
  • Configuration: lua/plugins/typescript.lua

Web Development

  • HTML, CSS, SCSS support
  • Emmet abbreviations
  • Live reload capabilities
  • Configuration: lua/plugins/web.lua

๐Ÿณ Docker Support

This config includes Docker integration for containerized development workflows:

# Docker commands and container management available within Neovim
# See lua/plugins/docker.lua for configuration details

๐Ÿ› ๏ธ Linux Tools

Language Support

Language-specific plugin configurations are organized as single files in lua/plugins/ for each language (not in subfolders), with clear headers for maintainability:

Enhanced Linux development experience with integrated tools for system programming and scripting.

Configuration: lua/plugins/linux-tools.lua

๐Ÿ“ฆ Plugin Management

This config uses lazy.nvim for plugin management.

Common Commands

:Lazy                    " Open lazy.nvim UI
:Lazy sync              " Sync all plugins
:Lazy update            " Update all plugins
:Lazy install           " Install missing plugins
:checkhealth            " Check plugin health

๐ŸŽฏ Performance

The configuration is optimized for performance with:

  • Smart lazy-loading of plugins
  • Disabled unnecessary rtp plugins
  • Configurable checker for plugin updates
  • Efficient plugin defaults

๐Ÿค– Copilot Chat

This configuration includes copilot.lua and copilot-chat.nvim for AI-powered code assistance.

Usage

  • Open Copilot Chat: <leader>ccq (quick chat)
  • Toggle Chat Panel: <leader>cct
  • Code Actions: Copilot suggestions available in insert mode

See lua/plugins/copilot.lua for configuration.

๐Ÿ› Troubleshooting

Plugins Not Loading

:Lazy sync
:checkhealth

Missing LSPs or Formatters

LSPs are auto-installed for recognized file types. Manually trigger installation:

:Mason               " Open Mason UI

Font Issues

Ensure you have installed a Nerd Font and configured it in your terminal or Neovide settings.

Update font in lua/config/options.lua:

vim.o.guifont = "YourFont Nerd Font:h14"

Slow Startup

Check loaded plugins:

:Lazy profile

๐Ÿ“š Learning Resources

๐Ÿค Contributing

Feel free to customize this configuration to match your workflow. Some ideas:

  • Add language-specific plugins
  • Create custom keybindings
  • Integrate additional LSPs
  • Add snippets and abbreviations
  • Modify color schemes and themes

๐Ÿ“„ License

This Neovim configuration is provided as-is. Refer to individual plugin licenses for details.


Happy coding! ๐ŸŽ‰

For questions or issues, please check the LazyVim documentation or the respective plugin repositories.

โšก