Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

R7rainz/neovim-conf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ LazyVim Configuration

A modern, feature-rich Neovim configuration built on LazyVim with support for multiple programming languages, elegant UI enhancements, and powerful development tools.

✨ 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 and visual enhancements
  • Beautiful UI: Modern colorschemes with Rosepine Moon as the default, customizable themes
  • 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

πŸ“‹ 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
        β”œβ”€β”€ 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
        β”œβ”€β”€ neo-tree.lua        # File explorer configuration
        β”œβ”€β”€ python.lua          # Python language support
        β”œβ”€β”€ telescope.lua       # Fuzzy finder configuration
        β”œβ”€β”€ theme.lua           # UI theme customization
        β”œβ”€β”€ typescript.lua      # TypeScript/JavaScript support
        └── web.lua             # Web development tools

⌨️ 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

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.