initial neovim config
commit
3bd3dfdffd
|
|
@ -0,0 +1,68 @@
|
|||
# Neovim Configuration
|
||||
|
||||
A modern Neovim configuration using lazy.nvim for plugin management.
|
||||
|
||||
## Installation
|
||||
|
||||
1. Make sure you have Neovim 0.8+ installed
|
||||
2. Clone or copy the `init.lua` file to your Neovim configuration directory:
|
||||
```bash
|
||||
# For Linux/macOS
|
||||
cp init.lua ~/.config/nvim/
|
||||
|
||||
# Or if using this directory structure
|
||||
# The init.lua is already in ~/.vim/
|
||||
```
|
||||
|
||||
3. Start Neovim - lazy.nvim will automatically install all plugins on first launch
|
||||
|
||||
## Plugins Included
|
||||
|
||||
- **lazy.nvim** - Plugin manager
|
||||
- **CtrlP** - Fuzzy file finder (`<Ctrl-P>` to open)
|
||||
- **lualine** - Modern status line
|
||||
- **gitsigns** - Git change indicators
|
||||
- **indent-blankline** - Visual indent guides
|
||||
- **bufferline** - Tab-like buffer management
|
||||
- **tokyonight** - Beautiful colorscheme
|
||||
- **todo-comments.nvim** - TODO comment highlighting
|
||||
|
||||
## Key Features
|
||||
|
||||
- Line numbers and relative line numbers enabled
|
||||
- Syntax highlighting enabled
|
||||
- 2-space indentation
|
||||
- Smart case searching
|
||||
- True color support
|
||||
- Git integration with visual indicators
|
||||
|
||||
## Usage
|
||||
|
||||
### File Navigation
|
||||
- `<Ctrl-P>` - Open CtrlP fuzzy finder
|
||||
- `:e filename` - Open file
|
||||
- `:bn` / `:bp` - Next/previous buffer
|
||||
|
||||
### Git
|
||||
- Git changes are automatically highlighted in the gutter
|
||||
- `+` for additions, `~` for changes, `_` for deletions
|
||||
|
||||
### TODO Management
|
||||
The configuration highlights TODO comments in your code:
|
||||
- `TODO:`, `FIXME:`, `HACK:`, `WARN:`, `PERF:`, `NOTE:`, `TEST:`
|
||||
|
||||
## Customization
|
||||
|
||||
Edit `init.lua` to customize:
|
||||
- Plugin configurations
|
||||
- Key mappings
|
||||
- Neovim settings
|
||||
- Colorscheme options
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If plugins don't load:
|
||||
1. Check Neovim version: `:version`
|
||||
2. Check plugin status: `:Lazy`
|
||||
3. Update plugins: `:Lazy update`
|
||||
4. Check for errors: `:messages`
|
||||
|
|
@ -0,0 +1,154 @@
|
|||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--filter=blob:none",
|
||||
"https://github.com/folke/lazy.nvim.git",
|
||||
"--branch=stable",
|
||||
lazypath,
|
||||
})
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- Configure lazy.nvim
|
||||
require("lazy").setup({
|
||||
-- CtrlP fuzzy file finder
|
||||
{
|
||||
"kien/ctrlp.vim",
|
||||
config = function()
|
||||
vim.g.ctrlp_working_path_mode = 'ra'
|
||||
vim.g.ctrlp_show_hidden = 1
|
||||
end,
|
||||
},
|
||||
|
||||
-- Lualine status line
|
||||
{
|
||||
"nvim-lualine/lualine.nvim",
|
||||
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||
config = function()
|
||||
require("lualine").setup({
|
||||
options = {
|
||||
theme = "tokyonight",
|
||||
component_separators = { left = "", right = "" },
|
||||
section_separators = { left = "", right = "" },
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Git signs
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
config = function()
|
||||
require("gitsigns").setup({
|
||||
signs = {
|
||||
add = { text = "+" },
|
||||
change = { text = "~" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Indent guides
|
||||
{
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
main = "ibl",
|
||||
config = function()
|
||||
require("ibl").setup({
|
||||
indent = {
|
||||
char = "│",
|
||||
tab_char = "│",
|
||||
},
|
||||
scope = { enabled = false },
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Buffer line
|
||||
{
|
||||
"akinsho/bufferline.nvim",
|
||||
version = "*",
|
||||
dependencies = "nvim-tree/nvim-web-devicons",
|
||||
config = function()
|
||||
require("bufferline").setup({
|
||||
options = {
|
||||
numbers = "none",
|
||||
close_command = "bdelete! %d",
|
||||
right_mouse_command = "bdelete! %d",
|
||||
left_mouse_command = "buffer %d",
|
||||
middle_mouse_command = nil,
|
||||
separator_style = "slant",
|
||||
always_show_bufferline = true,
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Tokyo Night colorscheme
|
||||
{
|
||||
"folke/tokyonight.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
config = function()
|
||||
require("tokyonight").setup({
|
||||
style = "night",
|
||||
light_style = "day",
|
||||
transparent = false,
|
||||
terminal_colors = true,
|
||||
})
|
||||
vim.cmd.colorscheme("tokyonight")
|
||||
end,
|
||||
},
|
||||
|
||||
-- TODO comments highlighting
|
||||
{
|
||||
"folke/todo-comments.nvim",
|
||||
dependencies = "nvim-lua/plenary.nvim",
|
||||
config = function()
|
||||
require("todo-comments").setup()
|
||||
end,
|
||||
},
|
||||
}, {
|
||||
-- Lazy.nvim configuration
|
||||
ui = {
|
||||
border = "none",
|
||||
size = {
|
||||
width = 0.8,
|
||||
height = 0.8,
|
||||
},
|
||||
},
|
||||
performance = {
|
||||
rtp = {
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"matchit",
|
||||
"matchparen",
|
||||
"netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Basic Neovim settings
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = false
|
||||
vim.opt.expandtab = true
|
||||
vim.opt.shiftwidth = 2
|
||||
vim.opt.tabstop = 2
|
||||
vim.opt.smartindent = true
|
||||
vim.opt.wrap = false
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
-- Enable syntax highlighting
|
||||
vim.cmd("syntax enable")
|
||||
Loading…
Reference in New Issue